Расскажи про свой опыт работы со статус-кодами

«Расскажи про свой опыт работы со статус-кодами» — вопрос из категории API и интеграции, который задают на 27% собеседований Системный Аналитик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В работе с HTTP статус-кодами важно понимать их семантику и правильно использовать в API.

Основные группы:

  • 2xx (Успех): 200 (OK), 201 (Created), 204 (No Content)
  • 3xx (Перенаправление): 301 (Moved Permanently), 302 (Found)
  • 4xx (Ошибка клиента): 400 (Bad Request), 401 (Unauthorized), 404 (Not Found)
  • 5xx (Ошибка сервера): 500 (Internal Server Error), 503 (Service Unavailable)

Пример REST API:

from flask import Flask, jsonify, abort

app = Flask(__name__)

@app.route('/users/<int:user_id>', methods=['GET'])
def get_user(user_id):
    if user_id == 1:
        return jsonify({"id": 1, "name": "Alice"}), 200
    else:
        abort(404, description="User not found")

Нюансы:

  • 400 вместо 200 при частичном успехе – иногда лучше явно указать проблему.
  • 429 (Too Many Requests) – для rate-limiting.
  • 418 (I'm a teapot) – шуточный, но иногда используется для кастомных сценариев.

Главное – соблюдать консистентность и документировать коды в API-контрактах.