Ответ
Выбор HTTP-метода зависит от семантики операции (создание, обновление, замена) и идемпотентности.
| Метод | Назначение (Семантика) | Идемпотентность | Безопасность | Тело запроса |
|---|---|---|---|---|
POST |
Создание нового ресурса. Основной метод для отправки данных. | Нет | Нет | Да |
PUT |
Полная замена ресурса по известному URI. Если ресурса нет — создает. | Да | Нет | Да |
PATCH |
Частичное обновление ресурса. | Нет* | Нет | Да |
GET |
Получение данных. Не должен использоваться для отправки, т.к. данные в URL, есть ограничения по длине и кэшированию. | Да | Да | Нет |
Почему POST — основной выбор для отправки?
Он не имеет ограничений GET (данные в теле, нет лимита длины) и четко указывает на намерение создать что-то новое, что не является идемпотентной операцией.
Пример POST-запроса для создания пользователя:
POST /api/v1/users HTTP/1.1
Host: api.example.com
Content-Type: application/json
Authorization: Bearer eyJhbGciOiJ...
{
"name": "Alice",
"email": "alice@example.com",
"role": "viewer"
}
Ожидаемый успешный ответ: HTTP/1.1 201 Created с заголовком Location: /api/v1/users/123 и телом созданного ресурса.