Фильтры в GET запросе
Как лучше всего реализовать фильтры в GET запросе?
Допустим есть метод,который получает пользователя с id равным 1: /user?id=1
Если нужно обрабатывать множество подобных фильтров /user?id=1&name=Ivan&... и не обязательно все будут использоваться.
Как лучше всего реализовать обработку?
@RequestMapping(value = "/user/", method = "RequestMethod.GET")
public String getUser(@RequestParam("name", required=false) String name) {
// ...
}
Ответы (2 шт):
Автор решения: Aziz Umarov
→ Ссылка
Вообще существует 3 способа передачи параметров запроса.
в URL path
Request Header
Request Body
Для Get запроса доступны лишь 1 - 2 в силу отсутствия Body. Использовать 1 или 2 для не больших параметров (до 2048 символов в совокупности) кому как нравится. Если нужно больше, то вариант 2 и тот с оговоркой на используемые сервера
- Apache 2.0, 2.2: 8K
- nginx: 4K - 8K
- IIS: в зависимости от версии, 8K - 16K
Автор решения: Artur Vartanyan
→ Ссылка
Controller:
// Вывод Заказчика по ID
@GetMapping("/customer/{id}")
Customer getCustomer(@PathVariable Long id) {
return adminService.getCustomer(id);
}
Service:
// Вывод Заказчика по ID
public Customer getCustomer(Long id) {
return customerRepository.getByIdAndUserRole(id, User.ROLE_CUSTOMER).orElseThrow(() -> new MainNotFound(id));
}