Контроллер переопределения 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