Gymterview
junior

Какие HTTP-методы используются в REST и какова их семантика?

В REST используются стандартные HTTP-методы для операций над ресурсами:

Метод CRUD-операция Описание Идемпотентный Безопасный
GET Read Получение ресурса Да Да
POST Create Создание нового ресурса Нет Нет
PUT Update/Replace Полная замена ресурса Да Нет
PATCH Update/Modify Частичное обновление ресурса Нет* Нет
DELETE Delete Удаление ресурса Да Нет
OPTIONS Получение допустимых методов Да Да
HEAD Аналог GET, но без тела ответа Да Да

*PATCH может быть идемпотентным в зависимости от реализации.

Примеры HTTP-запросов для каждого метода

GET — получает представление ресурса. Не должен изменять состояние сервера.

GET /api/users/42 HTTP/1.1
Accept: application/json

POST — создаёт новый ресурс. URI нового ресурса определяется сервером.

POST /api/users HTTP/1.1
Content-Type: application/json

{"name": "Иван", "email": "ivan@example.com"}

PUT — заменяет ресурс целиком. Если ресурс не существует, может создать его.

PUT /api/users/42 HTTP/1.1
Content-Type: application/json

{"name": "Иван Петров", "email": "ivan@example.com", "age": 30}

PATCH — частично обновляет ресурс. Отправляются только изменяемые поля.

PATCH /api/users/42 HTTP/1.1
Content-Type: application/json

{"email": "new-email@example.com"}

DELETE — удаляет ресурс.

DELETE /api/users/42 HTTP/1.1

OPTIONS — возвращает допустимые методы для ресурса. Используется в CORS-запросах (preflight).

OPTIONS /api/users HTTP/1.1

HEAD — аналогичен GET, но возвращает только заголовки без тела ответа. Используется для проверки существования ресурса или получения метаданных.

HEAD /api/users/42 HTTP/1.1

На собеседовании: интервьюер ожидает знания всех основных методов с их свойствами идемпотентности и безопасности. Частая ошибка — не знать разницу между PUT и PATCH или забыть про OPTIONS и HEAD.