Ответ
Веб-API (чаще всего RESTful) используют HTTP-методы как глаголы для выполнения операций над ресурсами. Каждый метод имеет семантическое значение.
Ключевые методы и их назначение:
-
GET – Запрос представления ресурса. Используется только для получения данных. Не должен изменять состояние сервера. Кэшируем.
- Пример:
GET /api/products/123– получить информацию о товаре.
- Пример:
-
POST – Создание нового ресурса. Тело запроса содержит данные для нового объекта. Сервер обычно назначает новый URI и возвращает его в заголовке
Location.- Пример:
POST /api/usersс телом{"name": "John"}– создать нового пользователя.
- Пример:
-
PUT – Полное обновление ресурса. Клиент отправляет обновленное представление всего ресурса по известному URI. Если ресурса нет, сервер может создать его (идемпотентность).
- Пример:
PUT /api/users/456с полными данными пользователя – заменить данные пользователя 456.
- Пример:
-
PATCH – Частичное обновление ресурса. Клиент отправляет только изменяемые поля. Более эффективен, чем PUT, для больших ресурсов.
- Пример:
PATCH /api/users/456с телом{"email": "new@mail.com"}– обновить только email.
- Пример:
-
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-методы. Это ж, блядь, как в армии: у каждого своя роль, и если путать — получишь пизды от сервера, и за дело.
Основные методы и что они творят:
-
GET – Получить, посмотреть, не трогая. Ты как в музее: смотришь, но руками не хватаешь. Ничего на сервере не должно поменяться, иначе это пиздец и бардак. Его ещё кэшировать можно.
- Пример:
GET /api/products/123– «Дай-ка посмотреть, что за товар под номером 123, ничего не меняя, ёпта».
- Пример:
-
POST – Создать с нуля, впендюрить новое. Ты приходишь с мешком данных и говоришь: «На, сервер, роди нового юзера из этого». Сервер обычно сам придумывает ему ID и говорит, где теперь этот уродец живет.
- Пример:
POST /api/usersс телом{"name": "Вася"}– «Создай мне Васю, вот его данные, а дальше сам разбирайся».
- Пример:
-
PUT – Полностью переписать, заменить хуй на мыло. Ты знаешь точный адрес ресурса и приносишь ВЕСЬ его новый вид. «Вот, обнови пользователя 456 ВОТ ЭТИМ ВСЕМ». Если его нет — можешь и создать. Главное, что если ты это дерьмо отправишь десять раз — результат будет как от одного раза (идемпотентность, блядь).
- Пример:
PUT /api/users/456со всеми полями – «Забудь всё, что знал про пользователя 456, теперь он вот этот чувак».
- Пример:
-
PATCH – Подлатать, подправить точечно. Умный метод. Не надо тащить всю тушу, если нужно только email поменять. Отправляешь заплатку.
- Пример:
PATCH /api/users/456с телом{"email": "new@mail.com"}– «Эй, пользователь 456, смени почту на эту, а остальное оставь как было».
- Пример:
-
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.