одному эндпоинту. Эндпоинт должен уметь фильтровать, сортировать и группировать (group by) по нескольким полям и все это одновременно. Но сортировать достаточно по одному полю. Вопрос вот в чем - а каким интерфейсом это лучше реализовать? Т.е. в квери параметрах будет что-то вроде
filters=field1=val&filters=field2=val&sort=field3=asc&group_by=field1&group_by=field2
Идеи:
- Подразумевать что по-умолчанию поля означают фильтрацию. Тогда из примера выше можно выкинуть filters. Но сортировку придется парсить, но это не смертельно.
- Плюнуть и просто передавать json. Можно телом в get-запросе.
ну sort="" отделить от фильтров не проблема
в целом я бы просто закладывал что для каждого поля в query ты знаешь смысл. Где-то фильтр, где-то пагинация, где-то сортировка. Тебе все равно писать их поддержку по отдельности
Но одно и то же поле может использоваться для нескольких операций. Мы можем отфильтровать по датам и по ним же сгруппировать.
то есть поле - да
?category=shoes,dress&price=100-1000&sort_by=price&group_by=price&page=10 | | v @dataclass class Params: category: List[str] price: Tuple[int, int] sort_by: SortFieldsEnum group_by: GroupFieldsEnum page: int
Обсуждают сегодня