У меня есть конечная точка, которая перечисляет объекты и запрашивает ее по параметрам запроса, которые мы добавляем. Некоторые значения не являются обязательными. Когда количество фильтрующих значений растет, код выглядит ужаснее. Я ищу решение, которое также выглядит хорошо.
http://localhost:port/v1/actions?type=1&from=x&to=y&userId=z&adminId
И вместо того, чтобы иметь много параметров в моем контроллере, как:
@RequestMapping(value = "/action")
public List<Actions> get(@RequestParam(value = "type") Optional<ActionType> actionType,
@RequestParam(value = "from") @DateTimeFormat(pattern = "MMddyyyy") Optional<Date> from,
@RequestParam(value = "to") @DateTimeFormat(pattern = "MMddyyyy") Optional<Date> to,
@RequestParam(value = "userId") Optional<UUID> userId,
@RequestParam(value = "adminId") UUID adminId) {
return handler.getActions(type, from, to, userId, adminId);
Не удалось найти решение. Может быть, что-то подобное было бы круто. Наличие модели и аннотирование их, как будут называться параметры запроса:
public class QueryObject {
@RequestParam(value = "type") Optional<ActionType> type;
@RequestParam(value = "from") @DateTimeFormat(pattern = "MMddyyyy") Optional<Date> from;
@RequestParam(value = "to") @DateTimeFormat(pattern = "MMddyyyy") Optional<Date> to;
@RequestParam(value = "userId") Optional<UUID> userId;
@RequestParam(value = "adminId") UUID adminId;
//Getters and setters
...
}
Нечто подобное было бы круто:
@RequestMapping(value = "/action")
public List<actions> get(
QueryObject object,
) { return handler.getActions(object); }
Если у вас есть предложения? Возможно ли это сделать?