Я работаю с API, используя репозитории Spring Boot и Spring Data (но не Spring Data REST).
@GetMapping
public List<Foo> listFoos(
@SortDefault(value = "name", direction = Sort.Direction.ASC)
Pageable pageable,
HttpServletRequest request) {
FooRepo.findAll(pageable);
}
Вышеописанное работает отлично.Я могу хорошо отсортировать, передав параметр sort
, однако меня немного беспокоит влияние на производительность.
Я бы хотел ограничить его поддержкой только сортировки по одному параметру за раз для производительности.причины.По умолчанию я могу сделать что-то вроде ?sort=name,createdAt
, что сгенерирует запрос на заказ как name
, так и createdAt
.Учитывая, что это публичный API, я немного обеспокоен тем, что некоторые пользователи злоупотребляют этим и пытаются сортировать по целому ряду значений, для которых мы не оптимизировали.
Во-вторых, есть некоторые значения, которые не 'не имеет смысла для сортировки.Например, если бы у Foo
был URL-адрес эскиза, сортировать по thumbnail
не имеет смысла.Есть ли возможность занести в белый или черный список значения сортировки?