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

Ответ

HTTP-коды состояния (status codes) — это стандартные трехзначные числовые ответы сервера на запрос клиента. Их основное назначение — информировать клиента о результате обработки его запроса.

Каждый код помогает клиенту (например, браузеру или другому приложению) понять, что делать дальше:

  • Успех (2xx): Можно обработать полученные данные.
  • Перенаправление (3xx): Нужно сделать новый запрос по другому URL.
  • Ошибка клиента (4xx): Нужно исправить что-то в запросе (например, URL, заголовки или тело) и повторить его.
  • Ошибка сервера (5xx): Проблема на стороне сервера, можно попробовать повторить запрос позже.

Правильное использование кодов состояния критически важно при проектировании REST API, так как оно позволяет создавать предсказуемые и легко отлаживаемые интерфейсы.

Пример возврата кодов состояния на сервере (Python, Flask):

from flask import Flask, jsonify, request

app = Flask(__name__)

users = {"1": {"name": "Alice"}}

@app.route('/users/<user_id>')
def get_user(user_id):
    user = users.get(user_id)

    if user:
        # Успех: возвращаем данные и код 200 OK
        return jsonify(user), 200
    else:
        # Ошибка клиента: ресурс не найден, возвращаем ошибку и код 404 Not Found
        return jsonify({"error": "User not found"}), 404

@app.route('/users', methods=['POST'])
def create_user():
    if not request.json or not 'name' in request.json:
        # Ошибка клиента: неверный формат запроса, код 400 Bad Request
        return jsonify({"error": "Invalid request body"}), 400

    # Логика создания пользователя...
    new_user_id = str(len(users) + 1)
    users[new_user_id] = {"name": request.json['name']}

    # Успех: ресурс создан, возвращаем его и код 201 Created
    return jsonify(users[new_user_id]), 201