Ответ
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 Ответ 18+ 🔞
Смотри, вот эта вся хуйня с HTTP-кодами — это как язык, на котором сервер с клиентом общаются. Три цифры, а сколько смысла, ёпта! Сервер тебе как бы на пальцах объясняет: «Чувак, с твоим запросом вот что вышло».
Если коротко и по делу:
- 2xx (Успех): Всё заебись, держи что просил. Например,
200 OK— вот твои данные, наслаждайся. - 3xx (Перенаправление): Бля, не туда приперся. Иди на другой адрес, вот тебе новый URL, не заблудись.
301 Moved Permanently— типа, мы тут переехали насовсем, запомни новый путь. - 4xx (Ошибка клиента): Ты, дружок, накосячил. Запрос кривой.
404 Not Found— ищешь то, чего нет, пиздец.400 Bad Request— прислал какую-то ахинею, которую я разобрать не могу. - 5xx (Ошибка сервера): А вот тут уже я, сервер, обосрался.
500 Internal Server Error— у меня внутри что-то сломалось, извини. Повтори запрос позже, может, починю.
В API это вообще святое. Если ты возвращаешь вместо 404 какой-нибудь 200 с текстом «не найдено», то ты, блядь, конченый пидорас. Клиент же не поймёт, успех это или нет. Надо чётко, по стандарту.
Вот смотри, как это в коде выглядит, на примере 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. Всё ок.
return jsonify(user), 200
else:
# Не нашёл — отдаём ошибку и код 404. Клиент, ищи лучше.
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:
# Прислал какую-то хуйню вместо JSON с именем. 400, иди исправляй.
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
Вот и вся магия. Говори на языке кодов, и все друг друга будут понимать. А если нет — ну, это уже твои проблемы, блядь.