У меня есть несколько контроллеров, которые автоматически создают REST
конечные точки.
@RepositoryRestResource(collectionResourceRel = "books", path = "books")
public interface BooksRepository extends CrudRepository<Books, Integer> {
public Page<Books> findTopByNameOrderByFilenameDesc(String name);
}
Когда я посещаю: http://localhost:8080/Books
Я вернусь:
{
"_embedded": {
"Books": [{
"id": ,
"filename": "Test123",
"name": "test123",
"_links": {
"self": {
"href": "http://localhost:8080/books/123"
},
"Books": {
"href": "http://localhost:8080/books/123"
}
}
}]
},
"_links": {
"self": {
"href": "http://localhost:8080/books"
},
"profile": {
"href": "http://localhost:8080/profile/books"
},
"search": {
"href": "http://localhost:8080/books/search"
},
"page": {
"size": 20,
"totalElements": 81,
"totalPages": 5,
"number": 0
}
}
}
Когда я создаю свой собственный контроллер:
@Controller
@RequestMapping(value = "/CustomBooks")
public class CustomBooksController {
@Autowired
public CustomBookService customBookService;
@RequestMapping("/search")
@ResponseBody
public Page<Book> search(@RequestParam(value = "q", required = false) String query,
@PageableDefault(page = 0, size = 20) Pageable pageable) {
return customBookService.findAll();
}
}
Я получу ответ, который совсем не похож на автоматически сгенерированный ответ контроллера:
{
"content": [{
"filename": "Test123",
"name" : "test123"
}],
"totalPages": 5,
"totalElements": 81,
"size": 20,
"number": 0,
}
Что мне нужно сделать, чтобы мой ответ выглядел как автоматически сгенерированный ответ? Я хочу, чтобы он был последовательным, поэтому мне не нужно переписывать код для другого ответа. Должен ли я делать это по-другому?
Редактировать: Нашел это: Включить сериализацию HAL в Spring Boot для пользовательского метода контроллера
Но я не понимаю, что мне нужно изменить в моем REST-контроллере, чтобы включить: PersistentEntityResourceAssembler
. Я искал в Google PersistentEntityResourceAssembler
, но он продолжает возвращать меня на похожие страницы без особого примера (или пример не работает для меня).
@ResourceRestController
? - person chrylis -cautiouslyoptimistic-   schedule 02.12.2016@RepositoryRestController
, как заметил Алекс. - person chrylis -cautiouslyoptimistic-   schedule 03.12.2016