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

Что такое двухсотые статус коды?

1.8 Middle🔥 182 комментариев
#Веб-тестирование#Теория тестирования

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

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

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

Что такое 200-е статус-коды HTTP?

200-е статус-коды HTTP (или коды состояния 2xx) — это группа статус-кодов протокола HTTP, которые указывают на успешное выполнение клиентского запроса к серверу. В терминологии HTTP они обозначаются классом 2xx Success. Эти коды сообщают клиенту (например, веб-браузеру или мобильному приложению), что его запрос был получен, понят и обработан сервером без ошибок. С точки зрения тестирования (QA), успешные 200-е ответы — это ожидаемое поведение системы, которое необходимо верифицировать в рамках функционального, интеграционного и API-тестирования.

Основные 200-е статус-коды и их значение

Семейство 2xx включает несколько конкретных статусов, каждый из которых уточняет характер успешного ответа:

  • 200 OK — наиболее распространённый статус. Означает, что запрос выполнен успешно, и сервер возвращает запрошенные данные (например, HTML-страницу, JSON-объект, изображение). Это стандартный ответ для успешных GET, POST, PUT или DELETE запросов.

    HTTP/1.1 200 OK
    Content-Type: application/json
    {"id": 123, "status": "active"}
    
  • 201 Created — указывает, что в результате выполнения запроса (обычно POST или PUT) на сервере был успешно создан новый ресурс. В заголовке ответа Location часто содержится URI созданного ресурса.

    HTTP/1.1 201 Created
    Location: /api/users/456
    Content-Type: application/json
    {"id": 456, "name": "New User"}
    
  • 202 Accepted — запрос принят для обработки, но она ещё не завершена. Это типично для асинхронных операций. Клиенту может быть возвращён идентификатор задачи (task ID) для отслеживания статуса.

    HTTP/1.1 202 Accepted
    Content-Type: application/json
    {"task_id": "task_789", "status": "processing"}
    
  • 204 No Content — сервер успешно обработал запрос, но не возвращает никакого контента в теле ответа. Часто используется для успешных операций DELETE или для POST/PUT запросов, где возврат данных не требуется.

    HTTP/1.1 204 No Content
    
  • 206 Partial Content — сервер возвращает только часть данных (range) запрошенного ресурса, как указано клиентом в заголовке Range. Критически важен для поддержки докачки файлов, потокового видео или аудио.

    HTTP/1.1 206 Partial Content
    Content-Range: bytes 0-999/5000
    Content-Type: video/mp4
    [данные видеофрагмента...]
    

Почему QA-инженеру важно разбираться в 200-х кодах?

Понимание нюансов успешных ответов — это ключевая компетенция для эффективного тестирования API и веб-приложений.

  1. Валидация корректного поведения системы. Мы не просто проверяем, что запрос не упал с 5xx/4xx ошибкой. Мы должны убедиться, что:
    *   При создании пользователя возвращается именно `201 Created`, а не `200 OK`, и в заголовке `Location` присутствует корректная ссылка.
    *   Удаление ресурса возвращает `204 No Content` (или `200 OK` с телом), но не `404 Not Found` *после* удаления.
    *   Запрос на несуществующую страницу диапазона файла (`Range: bytes=10000-`) должен вернуть `416 Range Not Satisfiable`, а не `200 OK` с пустым телом.

  1. Тестирование граничных условий и бизнес-логики. Например, при загрузке большого файла мы должны проверить, что сервер корректно обрабатывает запросы с заголовком Range и отвечает статусом 206. При выполнении долгой операции (генерация отчёта) — проверяем, что возвращается 202 Accepted и далее доступен эндпоинт для проверки статуса задачи.

  2. Анализ и документирование требований. Часто в спецификациях API (Swagger/OpenAPI) явно указываются ожидаемые статус-коды для каждого эндпоинта. QA-инженер должен не только проверять соответствие, но и задавать уточняющие вопросы: "Должен ли POST всегда возвращать 201, или в некоторых случаях 200?".

  3. Написание автоматизированных тестов (API Tests). В автотестах (на Python с библиотекой requests или JavaScript с axios) мы явноassert'им ожидаемый статус-код.

    import requests
    import pytest
    
    def test_create_user():
        url = "https://api.example.com/users"
        payload = {"name": "Alice"}
        response = requests.post(url, json=payload)
        # Проверяем КОНКРЕТНЫЙ статус-код
        assert response.status_code == 201, f"Expected 201, got {response.status_code}"
        assert "Location" in response.headers
        user_id = response.json()["id"]
        assert user_id is not None
    

Заключение: Для QA-инженера 200-е статус-коды — это не просто "зелёный" сигнал. Это инструмент для глубокой проверки соответствия работы сервера спецификации, бизнес-логике и лучшим практикам RESTful-архитектуры. Различение 200 OK, 201 Created и 204 No Content позволяет обнаружить дефекты на уровне проектирования API, которые часто ускользают при поверхностном тестировании только на наличие ответа.

Что такое двухсотые статус коды? | PrepBro