Как вернуть HTTP статус 201 в Flask: решение ошибки
Пройдите тест, узнайте какой профессии подходите
Быстрый ответ
HTTP-статус 201 передает информацию о успешном создании ресурса в REST API. Чтобы вернуть этот код во Flask, следует добавить его параллельно с результатом функции:
from flask import Flask, jsonify
app = Flask(__name__)
@app.route('/create', methods=['POST'])
def create_resource():
# Создается ресурс
return jsonify({'message': 'Ресурс успешно создан'}), 201
Такой подход ясно указывает на успешное создание нового ресурса.
Возврат ответов разного формата
Flask предоставляет возможность возвращать ответы не только в формате JSON. Для передачи HTML-содержимого можно использовать следующий код:
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/create', methods=['POST'])
def create_html_resource():
# Производится рендеринг страницы
response = render_template('created.html')
return response, 201, {'ContentType':'text/html'}
Такой код возвращает HTML-страницу, сопровождаемую HTTP-статусом 201 и MIME-типом text/html
.
Пользовательские заголовки и использование стандартных статус-кодов
Чтобы добавить пользовательские заголовки в ответ, достаточно вставить их в кортеж:
return data, status_code, headers
Следуя стандартам HTTP и используя соответствующие статус-коды, вы гарантируете точность передаваемых сообщений.
Визуализация
Можно провести аналогию, где сервер Flask представлен в роли повара, а статус 201 – вашим заказом:
Клиент (🧑💻): "Я хотел бы заказать блюдо под номером 201."
Повар (Flask 👨🍳): "Сейчас приготовим!"
Повар на кухне (получение обратной связи 👨🍳🥘):
@app.route('/create', methods=['POST'])
def create_resource():
# Немного кодирования... и вот блюдо готово!
return "Ваш заказ номер 201 готов!", 201 # 🍽✨
Итак, код статуса 201 объявляет: "Заказ выполнен" 🍽✨.
Необходимость явного создания исключений? Забудьте об этом.
С помощью кода статуса 201, указывающего на успешное выполнение, нет важности генерировать исключения; они обычно характерны для ошибок с кодами 4xx и 5xx.
Включение JSON-данных в ответ
Ответ с кодом статуса 201 может содержать информацию о созданном ресурсе в формате JSON:
return jsonify({'id': resource_id, 'message': 'Ресурс создан успешно.'}), 201
Такие данные, как ID или URL нового ресурса, помогают облегчить взаимодействие с вашим API.
Оформление вашего ответа
Для гарантированной правильности ответов:
- Проведите тестирование для проверки структуры и содержания ответа.
- Используйте декораторы или промежуточное ПО для централизованного форматирования ответов.
Это способствует универсальности в коммуникации с клиентами вашего приложения.
Обработка ошибок
Метод abort
используется для прерывания обработки и возвращения кода ошибки в случае, если в процессе создания ресурса возникли проблемы. Однако этот метод не требуется при успешной передаче статуса 201.
Полезные материалы
- Quickstart — Flask Documentation (2.2.x) — Введение в механизм ответов сервера на Flask.
- HTTP response status codes – HTTP | MDN — HTTP-статусы в справочном руководстве Mozilla.
- API — Flask Documentation (2.2.x) — Информация о функции
make_response
в Flask. - HTTP Status Codes – REST API Tutorial — Обзор лучших практик использования HTTP-статусов в REST API.
- Python REST APIs With Flask, Connexion, and SQLAlchemy – Part 1 – Real Python — Создание REST API с помощью Flask: руководство от Real Python.
- python – Return JSON response from Flask view – Stack Overflow — Обсуждение возврата JSON-ответов в Flask на форуме Stack Overflow.