Какой код возвращается при успешном обращении к серверу?
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
При успешном обращении к серверу по протоколу HTTP/HTTPS стандартным кодом состояния (Status Code) является 200 OK.
Коды состояния HTTP (HTTP Status Codes)
Сервер использует трехзначные числовые коды для информирования клиента (например, браузера или вашего автоматизированного скрипта) о результате обработки запроса. Эти коды разделены на пять классов:
1xx: Информационные (Informational)
Запрос получен, и процесс продолжается.
2xx: Успех (Success)
Запрос был успешно получен, понят и обработан. 200 OK — самый главный представитель этого класса.
3xx: Перенаправление (Redirection)
Требуются дальнейшие действия для завершения запроса (например, редирект).
4xx: Ошибка клиента (Client Error)
Запрос содержит некорректный синтаксис или не может быть выполнен (ошибка на стороне клиента). Например, 404 Not Found.
5xx: Ошибка сервера (Server Error)
Сервер не смог выполнить допустимый запрос (ошибка на стороне сервера). Например, 500 Internal Server Error.
Детали кода 200 OK
Этот код означает, что REST API запрос (GET, POST, PUT, PATCH, DELETE) выполнен успешно, и сервер возвращает запрошенные данные или подтверждение действия. Ответ обычно содержит полезную нагрузку (payload) в теле сообщения (например, JSON, XML, HTML).
Пример успешного ответа в REST API
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Content-Length: 85
{
"status": "success",
"data": {
"id": 123,
"name": "Иван Иванов",
"email": "ivan@example.com"
}
}
Проверка в коде автотестов
В QA Automation мы обязательно проверяем код ответа. Вот пример на Python с использованием библиотеки requests:
import requests
# Отправляем GET-запрос к API
response = requests.get('https://api.example.com/users/123')
# Проверяем, что статус-код равен 200 (УСПЕХ)
assert response.status_code == 200, f"Ожидался статус 200, но получен {response.status_code}"
# Дальнейшая проверка содержимого ответа
response_json = response.json()
assert response_json['data']['id'] == 123
assert response_json['status'] == 'success'
Аналогично в JavaScript (Node.js с axios):
const axios = require('axios');
axios.get('https://api.example.com/users/123')
.then(response => {
// Проверка статус-кода
console.assert(response.status === 200, `Ожидался статус 200, но получен ${response.status}`);
// Проверка данных
console.assert(response.data.data.id === 123);
console.assert(response.data.status === 'success');
})
.catch(error => {
console.error('Ошибка запроса:', error.message);
});
Важные нюансы для автоматизатора
- Успешные коды — не только 200. Для других успешных операций используются свои коды:
* **201 Created** — запрос выполнен и создан новый ресурс (часто в ответ на POST).
* **202 Accepted** — запрос принят, но обработка еще не завершена (асинхронные операции).
* **204 No Content** — запрос выполнен успешно, но в теле ответа нет содержимого (часто для DELETE или PUT).
- Всегда проверяйте статус-код явно. Не полагайтесь только на факт отсутствия исключения в библиотеке HTTP-клиента.
- Проверяйте вместе с телом ответа. Код 200 гарантирует только успешную доставку ответа. Вам также необходимо валидировать структуру и данные (schema, data) в теле ответа (JSON Schema, проверка полей, значений).
- Используйте возможности фреймворков. Современные фреймворки для тестирования API (например, REST Assured для Java, Pytest с requests для Python) имеют удобные assertions для проверки статус-кода.
// Пример на Java с REST Assured
import static io.restassured.RestAssured.*;
import static org.hamcrest.Matchers.*;
given().
when().
get("https://api.example.com/users/123").
then().
statusCode(200). // Проверка кода
body("data.name", equalTo("Иван Иванов")); // Проверка данных в ответе
Таким образом, 200 OK — это базовый индикатор успеха, но грамотный QA Automation Engineer всегда проводит комплексную проверку ответа сервера, включая статус-код, заголовки, структуру и фактические данные в теле ответа.