Какие HTTP-методы используются в веб-API и для чего?

Ответ

Веб-API (чаще всего RESTful) используют HTTP-методы как глаголы для выполнения операций над ресурсами. Каждый метод имеет семантическое значение.

Ключевые методы и их назначение:

  1. GETЗапрос представления ресурса. Используется только для получения данных. Не должен изменять состояние сервера. Кэшируем.

    • Пример: GET /api/products/123 – получить информацию о товаре.
  2. POSTСоздание нового ресурса. Тело запроса содержит данные для нового объекта. Сервер обычно назначает новый URI и возвращает его в заголовке Location.

    • Пример: POST /api/users с телом {"name": "John"} – создать нового пользователя.
  3. PUTПолное обновление ресурса. Клиент отправляет обновленное представление всего ресурса по известному URI. Если ресурса нет, сервер может создать его (идемпотентность).

    • Пример: PUT /api/users/456 с полными данными пользователя – заменить данные пользователя 456.
  4. PATCHЧастичное обновление ресурса. Клиент отправляет только изменяемые поля. Более эффективен, чем PUT, для больших ресурсов.

    • Пример: PATCH /api/users/456 с телом {"email": "new@mail.com"} – обновить только email.
  5. DELETEУдаление ресурса.

    • Пример: DELETE /api/users/456 – удалить пользователя 456.

Пример HTTP-запроса (POST):

POST /api/articles HTTP/1.1
Host: example.com
Content-Type: application/json
Authorization: Bearer token123

{
  "title": "REST API Guide",
  "content": "..."
}

Почему это важно для тестирования? Тестировщик должен проверять, что:

  • Метод используется согласно своей семантике (например, GET не изменяет данные).
  • API корректно обрабатывает недопустимые методы (возвращает 405 Method Not Allowed).
  • Проверяется идемпотентность (повторный PUT/DELETE дает тот же результат).

Ответ 18+ 🔞

Слушай, ну вот объясняю тебе как есть, про эти ваши HTTP-методы. Это ж, блядь, как в армии: у каждого своя роль, и если путать — получишь пизды от сервера, и за дело.

Основные методы и что они творят:

  1. GETПолучить, посмотреть, не трогая. Ты как в музее: смотришь, но руками не хватаешь. Ничего на сервере не должно поменяться, иначе это пиздец и бардак. Его ещё кэшировать можно.

    • Пример: GET /api/products/123 – «Дай-ка посмотреть, что за товар под номером 123, ничего не меняя, ёпта».
  2. POSTСоздать с нуля, впендюрить новое. Ты приходишь с мешком данных и говоришь: «На, сервер, роди нового юзера из этого». Сервер обычно сам придумывает ему ID и говорит, где теперь этот уродец живет.

    • Пример: POST /api/users с телом {"name": "Вася"} – «Создай мне Васю, вот его данные, а дальше сам разбирайся».
  3. PUTПолностью переписать, заменить хуй на мыло. Ты знаешь точный адрес ресурса и приносишь ВЕСЬ его новый вид. «Вот, обнови пользователя 456 ВОТ ЭТИМ ВСЕМ». Если его нет — можешь и создать. Главное, что если ты это дерьмо отправишь десять раз — результат будет как от одного раза (идемпотентность, блядь).

    • Пример: PUT /api/users/456 со всеми полями – «Забудь всё, что знал про пользователя 456, теперь он вот этот чувак».
  4. PATCHПодлатать, подправить точечно. Умный метод. Не надо тащить всю тушу, если нужно только email поменять. Отправляешь заплатку.

    • Пример: PATCH /api/users/456 с телом {"email": "new@mail.com"} – «Эй, пользователь 456, смени почту на эту, а остальное оставь как было».
  5. DELETEУдалить нахуй, стереть в порошок. Всё просто.

    • Пример: DELETE /api/users/456 – «Пользователь 456, исчезни в небытие».

Вот как выглядит запрос (POST), чтоб ты понимал масштаб:

POST /api/articles HTTP/1.1
Host: example.com
Content-Type: application/json
Authorization: Bearer token123

{
  "title": "REST API Guide",
  "content": "..."
}

А теперь, зачем это всё тестировщику? Да чтобы не было пиздеца!

  • Проверяй, что методы делают ТОЛЬКО то, что должны. Чтобы GET, сука, не удалял данные — это же волнение ебать!
  • Шли на API левый метод (типа POST на путь для GET) — должен получить в ответ 405 Method Not Allowed (метод не разрешён), а не тихую ошибку в логи.
  • Тестируй идемпотентность: дави два раза PUT или DELETE — результат должен быть одинаковым, а не создаться два одинаковых ресурса или не вылететь со второй попытки. Вот где доверия ебать ноль бывает к кривым API.