Переместить повторяющиеся @RequestParams куда-нибудь перед контроллером - PullRequest
1 голос
/ 25 апреля 2020

У меня есть несколько конечных точек в моих RestController s, которые следуют некоторой похожей подписи:

@GetMapping
public SomeItem get(@RequestParam String sortBy, 
                    @RequestParam String sortField, 
                    @RequestParam int pageNumber,
                    @RequestParam int pageSize) {
  QueryOptions queryOptions = QueryOptions.of(sortyBy, sortField, pageNumber, pageSize);
  // ...
}

Мне было интересно, есть ли способ удалить это дублирование кода из всех различных методов и переместить QueryOptions конструкция где-то до RestController метода, чтобы я мог использовать метод, подобный следующему:

@GetMapping
public SomeItem get(QueryOptions queryOptions) {
  // ...
}

Как я могу это сделать? Может быть, добавить фильтр в цепочке фильтров?

1 Ответ

1 голос
/ 27 апреля 2020

Оказывается, это поддерживается из коробки:

@Getter
@Setter
public class QueryOptions {
  private String pageNumber;
  private String pageSize;
  private String orderBy;
  private String sortField;
}

И тогда вы можете принять этот класс в методе Controller:

@GetMapping
public SomeItem get(QueryOptions queryOptions) {
  // ...
}
...