Советы по проектированию REST API
1. Множественное число для коллекций
✅
GET /products
GET /products/{product_id}
❌
GET /product/{product_id}
2. Не используйте глаголы в URL ресурсов
Использовать HTTP методы для описания операций.
❌
POST /updateuser/{userId} или GET /getusers
✅
PUT /user/{userId}
3. Не добавлять лишние сегменты в путь
✅
GET /v3/application/listings/{listing_id}
❌
PATCH /v3/application/shops/{shop_id}/listings/{listing_id}
Не пытаться отразить всю модель данных в URL. Если listing_id уникален — shop_id не нужен.
Исключение — если ключ действительно составной:
GET /listings/{listing_id}/options/{option_id}
4. Не добавлять расширения в URL
❌
GET /users.json
Формат передачи должен определяться через HTTP-заголовки (например, Accept) , не через URL.
✅
GET /users
и HTTP-заголовки настройка заголовков:
Accept: application/json
5. Не возвращать массивы верхнего уровня
Объект позволяет легко добавить пагинацию и дополнительные поля без поломки обратной совместимости
❌
[{"id":1}, {"id":2}]
✅
{ "data": [{"id":1}, {"id":2}] }
6. Строки для идентификаторов
Строки гибче: можно объединять, версионировать и переносить данные между базами без конфликтов.
❌
{ "id": 123 }
✅
{ "id": "123" }