Как создать простой REST API эндпоинт с помощью Flask

Ответ

Flask — это микрофреймворк, который отлично подходит для создания легковесных REST API. Для более структурированного подхода часто используется расширение Flask-RESTful.

Ключевые компоненты:

  • Flask: Основной объект приложения.
  • Api: Точка входа для расширения Flask-RESTful.
  • Resource: Класс, который определяет логику для одного или нескольких HTTP-методов (GET, POST, PUT и т.д.) для конкретного эндпоинта.
  • api.add_resource(): Метод для регистрации класса Resource и связывания его с URL-маршрутом.

Пример: эндпоинт для получения задачи

from flask import Flask
from flask_restful import Resource, Api

# 1. Инициализация приложения
app = Flask(__name__)
api = Api(app)

# 2. Определение ресурса
class TodoItem(Resource):
    # Обработка GET-запроса
    def get(self, todo_id):
        # В реальном приложении здесь будет логика получения данных из БД
        tasks = {
            1: {"task": "Изучить документацию Flask"},
            2: {"task": "Создать REST API"}
        }
        return tasks.get(todo_id, {"error": "Задача не найдена"}, 404)

# 3. Регистрация ресурса и маршрута
# URL будет выглядеть как /todos/1, /todos/2 и т.д.
api.add_resource(TodoItem, '/todos/<int:todo_id>')

if __name__ == '__main__':
    app.run(debug=True)

Для полноценного приложения этот базовый пример дополняется:

  • ORM (например, SQLAlchemy) для работы с базой данных.
  • Сериализацией/валидацией (например, с помощью Marshmallow) для преобразования данных.
  • Аутентификацией (например, JWT) для защиты эндпоинтов.