Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
HTTP Статус-коды: Полное объяснение
Статус-коды — это стандартные трёхзначные числовые коды, которые сервер возвращает в ответ на HTTP-запрос. Они сообщают клиенту о результате обработки запроса и определяют дальнейшее поведение приложения.
Классификация по группам
1xx — Информационные коды (100-199)
Это промежуточные ответы, сигнализирующие о продолжении обработки:
- 100 Continue — сервер готов получить тело запроса
- 101 Switching Protocols — переключение на другой протокол (например, WebSocket)
2xx — Успешные ответы (200-299)
Запрос обработан успешно:
- 200 OK — стандартный успешный ответ; данные возвращены
- 201 Created — ресурс успешно создан (часто с POST)
- 202 Accepted — запрос принят, но обработка ещё не завершена
- 204 No Content — успех, но тело ответа отсутствует
3xx — Перенаправления (300-399)
Требуется дополнительное действие для завершения запроса:
- 301 Moved Permanently — ресурс перемещён навсегда
- 302 Found — временное перенаправление
- 304 Not Modified — кэшированная версия актуальна
- 307 Temporary Redirect — как 302, но метод HTTP не меняется
4xx — Ошибки клиента (400-499)
Клиент отправил некорректный запрос:
- 400 Bad Request — синтаксическая ошибка в запросе
- 401 Unauthorized — требуется аутентификация
- 403 Forbidden — у пользователя нет прав доступа
- 404 Not Found — ресурс не найден
- 405 Method Not Allowed — метод не поддерживается для этого ресурса
- 409 Conflict — конфликт с текущим состоянием (например, дублирование)
- 422 Unprocessable Entity — данные валидны синтаксически, но семантически неправильны
- 429 Too Many Requests — слишком много запросов (rate limiting)
5xx — Ошибки сервера (500-599)
Сервер не может обработать запрос:
- 500 Internal Server Error — неожиданная ошибка
- 501 Not Implemented — функция не реализована
- 502 Bad Gateway — ошибка шлюза (proxy)
- 503 Service Unavailable — сервис временно недоступен
- 504 Gateway Timeout — истекло время ожидания
Примеры в коде
import requests
from flask import Flask, jsonify, request
app = Flask(__name__)
# Пример с requests
response = requests.get("https://api.example.com/users/1")
if response.status_code == 200:
data = response.json()
elif response.status_code == 404:
print("Пользователь не найден")
elif response.status_code == 500:
print("Ошибка сервера")
# Пример с Flask
@app.route("/users", methods=["POST"])
def create_user():
data = request.json
if not data.get("name"):
return jsonify({"error": "Name is required"}), 400 # Bad Request
user = {"id": 1, "name": data["name"]}
return jsonify(user), 201 # Created
@app.route("/users/<id>", methods=["GET"])
def get_user(id):
user = find_user(id)
if not user:
return jsonify({"error": "User not found"}), 404 # Not Found
return jsonify(user), 200 # OK
Лучшие практики
- Используй правильные коды — выбирай наиболее точный код для ситуации
- 2xx для успеха, 4xx для ошибок клиента, 5xx для ошибок сервера — не путай логику
- Логируй ошибки 5xx — всегда отслеживай серверные ошибки
- Обрабатывай переадресации — respects 3xx коды в библиотеках (requests делает это автоматически)
- Возвращай информативные сообщения об ошибках — в теле ответа объясни, что произошло
Знание статус-кодов критично для написания надёжного и понятного API, а также для отладки проблем с сетевым взаимодействием.