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

Приведи примеры ответов сервера

1.3 Junior🔥 242 комментариев
#API тестирование#Теория тестирования

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

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

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

Примеры ответов сервера в веб-разработке и тестировании API

Ответы сервера (HTTP Response) — это данные, которые сервер отправляет клиенту в ответ на его запрос. Они следуют стандарту HTTP (HyperText Transfer Protocol). Ответ включает статус-код, заголовки (headers) и, опционально, тело (body). Для QA Automation инженера понимание и анализ этих ответов критически важно для написания автотестов и валидации поведения API.

Структура HTTP-ответа

Типичный HTTP-ответ состоит из:

  • Строка статуса (Status Line) — содержит версию протокола, код статуса и текстовое пояснение.
  • Заголовки (Headers) — метаданные, описывающие ответ (тип контента, куки, кэширование и т.д.).
  • Пустая строка — разделяет заголовки и тело.
  • Тело (Body) — полезные данные (например, JSON, XML, HTML), часто присутствуют в успешных ответах или ошибках.

Примеры ответов с кодом

1. Успешный ответ (Код 200 OK)

Сервер успешно обработал запрос. Часто возвращает данные в формате JSON.

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Date: Thu, 01 Jan 2024 12:00:00 GMT
Content-Length: 56

{
  "status": "success",
  "data": {
    "id": 123,
    "name": "John Doe",
    "email": "john@example.com"
  }
}

В автотестах проверяем:

  • Статус-код 200.
  • Структуру JSON (например, наличие полей id, name).
  • Значения полей (например, email соответствует ожидаемому).

2. Ошибка клиента (Код 400 Bad Request)

Запрос содержит некорректные данные, например, невалидные параметры.

HTTP/1.1 400 Bad Request
Content-Type: application/json
Date: Thu, 01 Jan 2024 12:05:00 GMT

{
  "error": {
    "code": "INVALID_INPUT",
    "message": "Email format is invalid",
    "details": {
      "field": "email"
    }
  }
}

В тестах проверяем:

  • Статус-код 400.
  • Содержимое тела (error.code, error.message).
  • Логирование ошибки для отладки.

3. Ошибка аутентификации (Код 401 Unauthorized)

Требуется аутентификация, например, не передан или недействителен токен.

HTTP/1.1 401 Unauthorized
WWW-Authenticate: Bearer realm="example"
Content-Type: application/json

{
  "message": "Authentication required"
}

Для QA: проверяем, что защищённые эндпоинты возвращают 401 без токена.

4. Ошибка доступа (Код 403 Forbidden)

Сервер понял запрос, но отказывается его авторизовать (например, нет прав).

HTTP/1.1 403 Forbidden
Content-Type: application/json

{
  "error": "Forbidden",
  "description": "You do not have permission to access this resource"
}

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

5. Ресурс не найден (Код 404 Not Found)

Сервер не нашёл запрошенный ресурс (например, несуществующий ID пользователя).

HTTP/1.1 404 Not Found
Content-Type: application/json

{
  "message": "User with id 999 not found"
}

В автотестах: проверяем корректность сообщения об ошибке.

6. Внутренняя ошибка сервера (Код 500 Internal Server Error)

Сервер столкнулся с непредвиденной ошибкой, которая не позволяет обработать запрос.

HTTP/1.1 500 Internal Server Error
Content-Type: application/json

{
  "error": "Internal Server Error",
  "requestId": "req-12345"
}

Для QA: такие ответы могут указывать на баги в серверной логике, требующие расследования.

7. Ответ с перенаправлением (Код 302 Found)

Сервер перенаправляет клиента на другой URL.

HTTP/1.1 302 Found
Location: https://example.com/new-page
Content-Type: text/html

8. Пример с XML (Код 200 OK)

Некоторые API возвращают данные в формате XML.

HTTP/1.1 200 OK
Content-Type: application/xml

<response>
  <status>success</status>
  <user>
    <id>456</id>
    <name>Jane Smith</name>
  </user>
</response>

Как использовать в QA Automation

В автотестах (например, на Python с библиотекой requests) мы проверяем ответы:

import requests

def test_get_user():
    response = requests.get('https://api.example.com/users/123')
    
    # Проверка статус-кода
    assert response.status_code == 200
    
    # Проверка заголовков
    assert response.headers['Content-Type'] == 'application/json'
    
    # Парсинг JSON и проверка данных
    data = response.json()
    assert data['data']['id'] == 123
    assert data['data']['name'] == 'John Doe'

def test_invalid_request():
    response = requests.post('https://api.example.com/login', json={"email": "invalid"})
    assert response.status_code == 400
    error_data = response.json()
    assert error_data['error']['code'] == 'INVALID_INPUT'

Ключевые аспекты для QA:

  • Валидация статус-кодов — соответствие спецификации API.
  • Проверка структуры тела — использование JSON Schema или аналогичных инструментов.
  • Анализ заголовков — корректность Content-Type, Cache-Control и др.
  • Обработка ошибок — убедиться, что ошибки возвращают информативные сообщения.
  • Логирование — запись полных ответов при падениях тестов для отладки.

Понимание примеров ответов позволяет не только писать эффективные тесты, но и быстро диагностировать проблемы в работе API.

Приведи примеры ответов сервера | PrepBro