Что такое HTTP-метод PUT?

«Что такое HTTP-метод PUT?» — вопрос из категории HTTP и веб-протоколы, который задают на 24% собеседований AQA / Automation. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

PUT — это идемпотентный HTTP-метод для полного обновления ресурса по указанному URI. Он заменяет все текущие представления ресурса данными из запроса.

Ключевые характеристики для тестирования API:

  • Идемпотентность: Многократный вызов одного и того же PUT-запроса должен приводить к одному и тому же состоянию сервера.
  • Полная замена: В отличие от PATCH, PUT ожидает полного представления ресурса. Отсутствующие в запросе поля могут быть сброшены в значения по умолчанию или null.
  • Создание ресурса: Если ресурс по указанному URI не существует, сервер может создать его (часто возвращая статус 201 Created). Если обновляет существующий — возвращает 200 OK или 204 No Content.

Пример тест-кейса для PUT-запроса:

// Пример на Java с RestAssured
@Test
public void updateUserProfile() {
    String requestBody = """
        {
            "name": "John Doe",
            "email": "john.doe@example.com"
        }
        """;

    given()
        .contentType(ContentType.JSON)
        .body(requestBody)
    .when()
        .put("/api/users/123") // Полная замена профиля пользователя с id=123
    .then()
        .statusCode(200) // Проверяем успешное обновление
        .body("name", equalTo("John Doe"));
}

Что важно проверять QA-инженеру:

  1. Корректность кода ответа при создании и обновлении.
  2. Идемпотентность метода.
  3. Валидацию входных данных (обязательные поля, типы данных).
  4. Поведение при попытке обновления несуществующего ресурса (должен ли он создаваться?).
  5. Соответствие обновленных данных в ответе и в базе данных.