Один адрес эндпоинта и четыре ошибки в нём

На практическом мок-собесе я попросил ученика написать запрос: получить всех собак трёх лет из базы ветклиники. Он написал так:

http://api.v1/animals/dogs/year/3

Ошибок здесь четыре, и все типичные для джуна.

Нужен путь от корня: /api/v1.

Между api и v1 стоит точка, нужен слэш, версия в пути идёт отдельным сегментом.

Нет метода. Интервьюер должен сразу видеть, что вы читаете данные, значит GET.

И самое важное, фильтры спрятаны в путь. Путь описывает ресурс, dogs и year/3 - условия выборки, их передают query-параметрами после знака вопроса, через амперсанд.

Получается так:

GET /api/v1/animals?species=dog&age=3

Следом интервьюер обычно спрашивает, что делать, если фильтров тридцать. Вариант с телом запроса нормальный, только выносите его в отдельный ресурс поиска, POST /api/v1/animals/search, чтобы его не путали с созданием животного.

А как вы передаёте пагинацию: page и size или offset и limit?

Один адрес эндпоинта и четыре ошибки в нём | Сетка — социальная сеть от hh.ru