У меня есть запрос на получение коллекции пользователей, где коллекция может быть отсортирована, если запрашивается определенный порядок сортировки, например:
http://localhost:8080/api/users?page=0&size=5&sort=email,asc
Но она также сортируется с использованием сортировки по умолчаниюпорядок, если в запросе явно не указан порядок сортировки, например:
http://localhost:8080/api/users?page=0&size=5
В этом последнем случае сортировка выполняется по фамилии и первому имени, как указано в конечной точке контроллера:
public ResponseEntity<PagedResources<UserResource>> all(@PageableDefault(sort = { "lastname", "firstname" }, direction = Sort.Direction.ASC) Pageable pageable, Sort sort,
PagedResourcesAssembler<User> pagedResourcesAssembler, UriComponentsBuilder builder) {
Таким образом, HTTP-ответ, являющийся HATEOAS, выглядит следующим образом:
{
"_embedded" : {
"userResourceList" : [
]
},
"_links" : {
"self" : {
"href" : "http://localhost:8080/api/users?page=0&size=5&sort=firstname,asc"
}
},
"page" : {
"size" : 5,
"totalElements" : 5,
"totalPages" : 1,
"number" : 0
}
}
, а заголовок Location
также:
Location: http://localhost:8080/api/users?page=0&size=5&sort=lastname&sort=firstname&lastname.dir=ASC&firstname.dir=ASC
Теперь на передней панелиend Angular
клиентское приложение, я хотел бы передать этот порядок сортировки обратно в некоторые свойства страницы, например:
getUsers(searchTerm: string, sortFieldName: string, sortDirection: string, currentPageNumber: number): Observable<UsersApi> {
return this.userService.getSome(searchTerm, sortFieldName, sortDirection, currentPageNumber, this.elementsPerPage)
.pipe(
map(response => {
console.log(response.page.sortFieldName); // TODO How to have this one fed ?
return new UsersApi(
response._embedded.userResourceList as User[],
response.page.number,
response.page.size,
response.page.totalElements,
response.page.totalPages,
response.page.sortFieldName,
response.page.sortDirection
);
})
);
}
Но, конечно, такого свойства response.page.sortFieldName
не существует.
Как я должен получить этот фактический порядок сортировки?Должен ли я добавить его в ответ или попытаться разобрать заголовок Location
?Или значение self
url из ответа?