← Назад к вопросам

Какими HTTP-методами пользовался

1.6 Junior🔥 251 комментариев
#Тестирование API

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

HTTP-методы, которыми я пользовался

В своей практике QA инженера активно использовал все основные HTTP-методы для тестирования API. Расскажу подробно о каждом.

GET

Определение: Получение данных с сервера без изменения состояния.

Использование в тестировании:

  • Получение информации о пользователе: GET /api/v1/users/{id}
  • Список товаров: GET /api/v1/products?page=1&limit=10
  • Проверка статуса сервера: GET /api/v1/health
  • Получение конфигурации: GET /api/v1/config

Практический пример:

GET /api/v1/users/123

Ответ:
{
  "id": 123,
  "name": "John Doe",
  "email": "john@example.com"
}

POST

Определение: Создание нового ресурса на сервере.

Использование в тестировании:

  • Создание нового пользователя: POST /api/v1/users
  • Авторизация: POST /api/v1/auth/login
  • Добавление товара в корзину: POST /api/v1/cart/items
  • Создание заказа: POST /api/v1/orders

Практический пример:

POST /api/v1/users
Content-Type: application/json

{
  "name": "Jane Doe",
  "email": "jane@example.com",
  "password": "securePass123"
}

Ответ (201 Created):
{
  "id": 456,
  "name": "Jane Doe",
  "email": "jane@example.com"
}

PUT

Определение: Полная замена существующего ресурса.

Использование в тестировании:

  • Обновление профиля: PUT /api/v1/users/123
  • Изменение всех данных товара: PUT /api/v1/products/456
  • Обновление статуса заказа: PUT /api/v1/orders/789

Практический пример:

PUT /api/v1/users/123
Content-Type: application/json

{
  "name": "John Updated",
  "email": "john.new@example.com",
  "phone": "+1234567890"
}

Ответ (200 OK):
{
  "id": 123,
  "name": "John Updated",
  "email": "john.new@example.com",
  "phone": "+1234567890"
}

PATCH

Определение: Частичное обновление ресурса (только изменяемые поля).

Использование в тестировании:

  • Изменение только имени: PATCH /api/v1/users/123
  • Обновление цены товара: PATCH /api/v1/products/456
  • Изменение одного поля заказа: PATCH /api/v1/orders/789

Практический пример:

PATCH /api/v1/users/123
Content-Type: application/json

{
  "name": "John Another Update"
}

Ответ (200 OK):
{
  "id": 123,
  "name": "John Another Update",
  "email": "john.new@example.com",
  "phone": "+1234567890"
}

DELETE

Определение: Удаление ресурса со сервера.

Использование в тестировании:

  • Удаление пользователя: DELETE /api/v1/users/123
  • Удаление товара: DELETE /api/v1/products/456
  • Очистка корзины: DELETE /api/v1/cart
  • Отмена заказа: DELETE /api/v1/orders/789

Практический пример:

DELETE /api/v1/users/123

Ответ (204 No Content) или (200 OK):
{
  "message": "User deleted successfully"
}

HEAD

Определение: Как GET, но без тела ответа. Только заголовки.

Использование в тестировании:

  • Проверка наличия ресурса: HEAD /api/v1/users/123
  • Проверка доступности эндпоинта: HEAD /api/v1/health
  • Получение информации без скачивания тела

OPTIONS

Определение: Получение информации о допустимых методах для ресурса.

Использование в тестировании:

  • Проверка CORS: OPTIONS /api/v1/users
  • Получение информации о поддерживаемых методах

Практический пример:

OPTIONS /api/v1/users

Ответ (200 OK):
Allow: GET, POST, OPTIONS
Access-Control-Allow-Methods: GET, POST, PUT, DELETE

Практический опыт использования

Инструменты

Postman:

  • Основной инструмент для ручного тестирования HTTP методов
  • Создание и организация коллекций запросов
  • Pre-request scripts и tests
  • Экспорт в код (curl, Python, JavaScript)

curl:

  • Командная строка для быстрого тестирования
  • Автоматизация в скриптах
  • Интеграция в CI/CD

Python requests:

import requests

# GET
response = requests.get('https://api.example.com/users/123')

# POST
data = {"name": "John", "email": "john@example.com"}
response = requests.post('https://api.example.com/users', json=data)

# PUT
response = requests.put('https://api.example.com/users/123', json=data)

# PATCH
response = requests.patch('https://api.example.com/users/123', json={"name": "Updated"})

# DELETE
response = requests.delete('https://api.example.com/users/123')

REST Assured (Java):

  • Given-When-Then синтаксис
  • Валидация ответов
  • Интеграция с тестовыми фреймворками

Сложные сценарии

Последовательные запросы:

  • POST для создания, затем GET для проверки, потом DELETE для очистки

Авторизация:

  • POST /login для получения токена
  • Использование токена в Authorization header для остальных запросов

Обработка ошибок:

  • Проверка 400 (Bad Request) для неправильных данных
  • Проверка 401 (Unauthorized) для отсутствия авторизации
  • Проверка 404 (Not Found) для удалённого ресурса
  • Проверка 500 (Internal Server Error) для ошибок сервера

Вывод

Освоение HTTP методов — ключевой навык для QA инженера. Это основа API тестирования и даёт понимание того, как приложение взаимодействует с сервером.