HTTP. Краткие советы по использованию протокола
Основные рекомендации
-
URL идентифицирует ресурс. Вызов метода — не ресурс.
- Неправильно:
GET /?method=шарахнуть&to=Луна - Правильно:
POST /шарахалка/?to=Луна
- Неправильно:
-
URL состоит из схемы, хоста, пути, запроса и фрагмента.
- Путь используется для иерархических ресурсов.
- Запрос — для неиерархических и параметров операции.
- Фрагмент — для подчинённых ресурсов без URL.
- Пример:
http://nyashnye-kotiki.xxx/breeds/maine-coon/?deliver_to=Moscow#photo
-
Обращение по HTTP — это применение метода (глагола) к URL.
- Результат должен соответствовать глаголу:
GETвозвращает ресурс.DELETEудаляет ресурс.
- Результат должен соответствовать глаголу:
Особенности методов
-
Безопасные методы:
GET,HEAD,OPTIONSне изменяют состояние ресурса.- Их могут вызывать сетевые агенты без вашего согласия.
-
Кэш ирование:
GETиHEADкэшируются по умолчанию.- Остальные методы — нет.
-
Идемпотентность:
GET,PUT,DELETEвозвращают одинаковый результат при повторных вызовах.- Пример:
PUTкладёт ресурс по URL.GETвозвращает ресурс.DELETEудаляет ресурс.
-
Использование
POST:- Применяется, если нет URL для операции.
- Пример:
POST /threads/php-rulezz/messages - Повторный
POSTсоздаёт дубликат, аPUTможно повторять б ез изменений результата.
-
Разница между
PUTиPATCH:PUTобновляет или создаёт ресурс целиком.PATCHизменяет ресурс частично.
Коды ответа
-
Назначение кодов:
3xx— требуется дополнительное действие.4xx— ошибка клиента (желательно уточнять причину).5xx— ошибка на стороне сервера.
-
Типичные ответы:
GET→200 OKPUT→201 Created(если ресурс создан) или200 OK(если обновлён)DELETE→204 No ContentPOST→200 OKили201 Created(с указанием URL нового ресурса в заголовкеLocation)
-
Особенности статусов:
401 Unauthorizedиспользуется только с заголовкомWWW-Authenticate.403 Forbiddenприменяется для других случаев.304 Not Modifiedсигнализирует, что ресурс нужно взять из кэша.404 Not Foundможно повторять, так как ресурс м ожет появиться позже.410 Goneиспользуется для ресурсов, которые удалены навсегда.
Подборка материалов по теме
- 15 тривиальных фактов о правильной работе с протоколом HTTP — Хабр, Яндекс
- REST API Best Practices — Хабр
- Best Practices in API Design — блог Swagger