URI ресурса должен читаться как путь на основе существительных к «вещи», а не действие. HTTP-метод уже задаёт глагол, поэтому URI нужно лишь ясно и последовательно идентифицировать ресурс.
URI ресурса должен читаться как путь на основе существительных к «вещи», а не действие. HTTP-метод уже задаёт глагол, поэтому URI нужно лишь ясно и последовательно идентифицировать ресурс.
GET /users/42 — не GET /getUser?id=42. Метод (GET) и есть глагол./users — коллекция; /users/42 — один элемент. Множественное число везде сохраняет предсказуемость./users/42/orders = «заказы, принадлежащие пользователю 42».kebab-case, нижний регистр. /blog-posts, не /blogPosts и не /Blog_Posts./users?role=admin&sort=-created_at./users collection of users
/users/42 a single user
/users/42/orders orders belonging to user 42 (sub-collection)
/users/42/orders/1001 a specific order of that user
/orders/1001 same order, addressable at top level too
GET /users/42/orders?status=shipped&sort=-created_at&page=2 HTTP/1.1
Accept: application/json
Избегайте глубокой вложенности за пределами одного-двух уровней — /users/42/orders/1001/items/5/reviews становится хрупким. Как только у заказа есть собственный ID, предпочитайте /orders/1001. Для действий, не укладывающихся в CRUD (например, «отправить письмо»), допустим суб-ресурс в стиле контроллера: POST /users/42/verify-email.
Согласованное именование делает API интуитивным — разработчик, увидевший /users и /users/42, может правильно угадать /products и /products/99, не читая документацию. Интервьюеры используют это, чтобы оценить, мыслите ли вы ресурсами (REST-мышление) или RPC-вызовами (/doThisThing). Самые частые антипаттерны — глаголы в пути, непоследовательное множественное число и глубоко вложенные URL — все они делают API труднее для изучения и сопровождения и сигнализируют о разработчике, не усвоившем ограничение uniform-interface в REST. Хороший дизайн URI также разделяет заботы: идентичность в пути, фильтрация и пагинация в query string, что сохраняет кэширование и маршрутизацию чистыми.
Библиотека вопросов для IT-собеседований с подробными ответами — от Junior до Senior.
Поддержать