Приведи пример HTTP-заголовка, с которым часто сталкивался при тестировании

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

Ответ

Content-Type: application/json — это заголовок, с которым я работаю постоянно при тестировании REST API. Он указывает, что тело запроса или ответа содержит данные в формате JSON.

Пример его использования в тестах:

// Тест на отправку POST-запроса с правильным Content-Type
@Test
void testCreateUser_WithValidJson() {
    String userJson = "{"name": "John", "email": "john@test.com"}";

    given()
        .contentType("application/json") // Устанавливаем заголовок
        .body(userJson)
    .when()
        .post("/api/users")
    .then()
        .statusCode(201)
        .contentType("application/json"); // Проверяем заголовок в ответе
}

// Негативный тест: отправка данных без заголовка или с неверным типом
@Test
void testCreateUser_WithoutContentType_ShouldFail() {
    String userJson = "{"name": "John"}";

    given()
        // Заголовок Content-Type НЕ установлен
        .body(userJson)
    .when()
        .post("/api/users")
    .then()
        .statusCode(415); // Ожидаем Unsupported Media Type
}

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

  • Валидация API: Сервер должен корректно обрабатывать или отвергать запросы в зависимости от этого заголовка.
  • Поиск дефектов: Неправильная обработка Content-Type — частый источник ошибок (например, падение сервера при получении text/plain вместо application/json).
  • Документация и контракты: Заголовок является частью контракта API, и тесты должны это проверять.