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

Какие знаешь типы запросов REST?

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

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

🐱
deepseek-v3.2PrepBro AI6 апр. 2026 г.(ред.)

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

Типы запросов в REST API (HTTP Methods)

В RESTful архитектуре основными типами запросов являются стандартные HTTP методы, которые соответствуют операциям CRUD (Create, Read, Update, Delete). Они определяют действие, которое клиент хочет выполнить с ресурсом на сервере. Каждый метод имеет строго определённую семантику и должен использоваться согласно принципам REST.

Основные HTTP методы (CRUD операции)

1. GET — Получение данных (Read)

Метод GET используется для чтения или получения информации о ресурсе. Он должен быть безопасным (idempotent) и не изменять состояние ресурса на сервере.

  • Пример запроса: Получение списка пользователей.
GET /api/users
  • Ответ сервера: JSON массив объектов пользователей.
[
  { "id": 1, "name": "Иван" },
  { "id": 2, "name": "Мария" }
]

2. POST — Создание нового ресурса (Create)

Метод POST применяется для создания нового ресурса. Он не является idempotent — повторный запрос с теми же данными может создать дубликат.

  • Пример запроса: Создание нового пользователя.
POST /api/users
Content-Type: application/json

{
  "name": "Алексей",
  "email": "alex@example.com"
}
  • Ответ сервера: Статус 201 Created с данными созданного ресурса (часто включая присвоенный ID).

3. PUT — Полное обновление ресурса (Update/Replace)

Метод PUT предназначен для полного обновления или замены ресурса. Клиент передаёт все новые данные для ресурса. Это idempotent операция: повторные одинаковые запросы не изменяют результат.

  • Пример запроса: Обновление данных пользователя с ID=1.
PUT /api/users/1
Content-Type: application/json

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

4. PATCH — Частичное обновление ресурса (Update/Modify)

Метод PATCH используется для частичного обновления ресурса. Клиент отправляет только те поля, которые нужно изменить. В отличие от PUT, он не требует передачи всего объекта.

  • Пример запроса: Изменение только email пользователя.
PATCH /api/users/1
Content-Type: application/json

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

5. DELETE — Удаление ресурса (Delete)

Метод DELETE выполняет удаление указанного ресурса. Это idempotent операция: после успешного удаления повторный запрос возвращает 404 Not Found или 200/204, но ресурс уже удалён.

  • Пример запроса: Удаление пользователя.
DELETE /api/users/1

Дополнительные важные методы

6. OPTIONS — Получение информации о доступных методах

Метод OPTIONS используется для определения того, какие HTTP методы и операции поддерживаются сервером для конкретного ресурса (Endpoint). Это критически важно для CORS (Cross-Origin Resource Sharing).

OPTIONS /api/users
  • Ответ сервера: Заголовок Allow: GET, POST, PUT, DELETE.

7. HEAD — Получение метаданных

Метод HEAD аналогичен GET, но сервер возвращает только заголовки ответа без тела. Используется для проверки доступности ресурса, валидации данных (ETag, Last-Modified) без передачи всего контента.

Ключевые принципы использования методов в REST

  • Семантическая корректность: Методы должны использоваться строго по их назначению (например, GET никогда не должен изменять данные).
  • Idempotentность: Методы GET, PUT, DELETE, HEAD, OPTIONS являются idempotent — многократное выполнение одинакового запроса даёт тот же результат.
  • Безопасность: Методы GET, HEAD, OPTIONS считаются безопасными и не должны вызывать изменения на сервере.
  • Статусные коды: Каждый метод предполагает определённые HTTP статусы для успешного ответа:
    *   `GET`: `200 OK`
    *   `POST`: `201 Created`
    *   `PUT/PATCH`: `200 OK` или `204 No Content`
    *   `DELETE`: `200 OK` или `204 No Content`
    *   `OPTIONS`: `200 OK`

Практическое значение для QA Engineer

Знание типов запросов позволяет тестировщику:

  1. Проверять корректность реализации API (правильный метод для каждой операции).
  2. Составлять тестовые сценарии для положительных и отрицательных случаев (например, DELETE для несуществующего ресурса должен возвращать 404).
  3. Тестировать граничные условия и невалидные данные для каждого метода (например, отправка PUT с частичными данными вместо полного объекта).
  4. Валидировать соблюдение принципов REST (idempotentность, безопасность).
  5. Проверять обработку CORS через метод OPTIONS.

Понимание различий между PUT (полное обновление) и PATCH (частичное обновление) особенно важно для тестирования сложных ресурсов, где частичное обновление должно корректно обрабатываться без нарушения целостности данных.