Контроллер переопределения Spring Data Rest для Templated Link

Я использую Spring Data REST, чтобы представить различные доменные объекты в качестве ресурсов.

@Entity
class Person() {
    //fields
}

public interface PersonRepository implemets PagingAndSortingRepository<Person, Long> {

}

А сейчас /persons будет сопоставлен с методами хранилища.

Допустим, я хочу переопределить метод GET. Итак, я делаю:

@RestController
@RequestMapping("/persons")
public class PersonController {

    private PersonRepository repository;

    @RequestMapping(method = RequestMethod.GET)
    public ResponseEntity<?> getAll(Pageable pageable, PagedResourcesAssembler<Person> assembler) {

        Page<Student> page = repository.findAll();
        return ResponseEntity.ok(assembler.toResource(page));

    }
}

Хорошо, когда я ударил http://localhost:8080/personsкак ожидается, он будет обработан PersonController::getAll метод.

Это даст мне этот JSON

{
  "_links": {
    "self": {
      "href": "http://localhost:8080/api/persons{?page,size,sort}",
      "templated": true
    }
  },
  "_embedded": {
    "persons": [
      {
        "active": true,
        "email": "mail@mail.com",
        "name": "myname",
        "phoneNumber": "1234-456",
        "surname": "mysurname",
        "userName": "username"
      }
    ]
  },
  "page": {
    "size": 20,
    "totalElements": 1,
    "totalPages": 1,
    "number": 0
  }
}

Однако, если я нажму self ссылка ответ не будет обработан с моего пользовательского контроллера, но с оригинала @RepositoryRestController из SDR,

Есть ли способ, которым я могу настроить пользовательский контроллер, чтобы также включать дескрипторы шаблонных дескрипторов?

1 ответ

Решение

http://localhost:8080/persons против http://localhost:8080/api/persons

добавлять /api в ваш контроллер сопоставления запросов для перезаписи контроллера SDR

Другие вопросы по тегам