У меня есть довольно сложная группа сервисов, которые соответствуют HATEOAS-части приложения REST. Весь фронт строго написан на Angular, так что, похоже, он работает для того, для чего он был разработан.
Хотя у меня есть защита на стороне сервера, чтобы быть уверенным, что неправильный пользователь не отредактирует неверную информацию, когда пользователь попадает на страницу ADMIN, он может видеть всю информацию, в том числе и ту, которую он может 'т изменить.
Таким образом, выполнение get / infromation позволяет получить все данные, как ожидалось, и определено в Spring RepositoryRestResource, поэтому я добавил метод findAllByRegion в интерфейс, и теперь я могу получить ответ от / findAllByRegion? Region =52485
@RepositoryRestResource(collectionResourceRel = "information", itemResourceRel = "information", path = "information")
public interface InformationRepositoryRestResource extends JpaRepository<Information, Integer> {
Information findByAlias(String alias);
Information findOneById(int id);
List<Information> findAllByRegion(Integer region);
}
Хорошо, я ожидал, что Spring создаст идентичную точку, но будет фильтровать данные по регионам.
В структуре ответа JSON отсутствуют некоторые поля, которые нарушают работу моего внешнего интерфейса.
Разница между / information / findAll и / information / findAllByRegion заключается в куче дополнительных полей в объекте _links:
"_links" : {
"first" : {
"href" : "http://localhost:8080/information?page=0&size=20"
},
"self" : {
"href" : "http://localhost:8080/information{?page,size,sort}",
"templated" : true
},
"next" : {
"href" : "http://localhost:8080/information?page=1&size=20"
},
"last" : {
"href" : "http://localhost:8080/information?page=9&size=20"
},
"profile" : {
"href" : "http://localhost:8080/profile/information"
},
"search" : {
"href" : "http://localhost:8080/information/search"
}
},
"page" : {
"size" : 20,
"totalElements" : 200,
"totalPages" : 10,
"number" : 0
}
Я не настолько знаком с Spring, но яожидал, что это создаст точку обслуживания, идентичную той, которую я могу найти в / информация.
Как я должен фильтровать данные в этом сценарии?
Почему Spring дает мне больше данных на одном конце и меньше на другом?
РЕДАКТИРОВАТЬ:
Нашел половину моего ответа: https://www.baeldung.com/spring-data-jpa-pagination-sorting
Кажется, что возврата страницы <> достаточно, чтобы добавить нумерацию страниц, необходимую для работы внешнего интерфейса.
Почему это было включено по умолчанию в другом случае?