FastAPI — это современный фреймворк для создания производительных и масштабируемых веб-приложений на Python. Он предлагает разработчикам мощный инструмент для создания API с минимальными усилиями, обеспечивая высокую скорость работы и простоту разработки. В этой статье мы разберём, почему FastAPI стал популярным среди разработчиков, и создадим наше первое API-приложение.

Что такое FastAPI

FastAPI — это современный веб-фреймворк для создания API на Python. Он использует ASGI (асинхронный серверный интерфейс) и поддерживает асинхронное программирование на уровне ядра. Главные плюсы:

  • Скорость: Производительность близка к Node.js и Go.
  • Легкость разработки: Типизация и интеграция с Pydantic значительно упрощают валидацию данных.
  • Автоматическая документация: FastAPI генерирует Swagger и ReDoc прямо из вашего кода.

Если коротко — вы получаете мощь, простоту и современный подход в одном флаконе.

Установка и настройка окружения

Давайте начнём с установки FastAPI и сервера Uvicorn (для запуска нашего приложения).

Создаем виртуальное окружение

python -m venv env

Активируем его (для Windows)

source env\Scripts\activate

Активируем его (для Linux или Mac)

source env/bin/activate

Устанавливаем FastAPI и Uvicorn

pip install fastapi uvicorn

Совет: используйте venv для изоляции окружения — это спасёт вас от проблем с зависимостями.

Наше первое FastAPI-приложение

Создадим файл main.py и напишем простейшее приложение:

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {"message": "Hello, FastAPI!"}

Что здесь происходит?

  • FastAPI() создаёт экземпляр нашего приложения.
  • @app.get(«/») — это декоратор, который определяет маршрут для HTTP GET-запроса на корневой путь (/).
  • read_root() — функция, которая возвращает словарь. FastAPI автоматически конвертирует его в JSON-ответ.

Запуск сервера

Запустим наше приложение с помощью Uvicorn:

uvicorn main:app --reload
# main — имя файла без расширения.
# app — имя экземпляра FastAPI в нашем файле.
# --reload — включает автоматическую перезагрузку при изменении кода.

Теперь откройте браузер и перейдите на http://127.0.0.1:8000. Вы увидите:

{"message": "Hello, FastAPI!"}

Автоматическая документация

Один из самых приятных бонусов FastAPI — встроенная генерация документации OpenAPI. Перейдите по ссылке http://127.0.0.1:8000/docs и увидите Swagger UI. Здесь можно тестировать свои маршруты прямо из браузера!

Также есть ReDoc-документация: http://127.0.0.1:8000/redoc.

Добавим немного параметров

FastAPI позволяет легко добавлять параметры в маршруты. Давайте модифицируем наше приложение:

from fastapi import FastAPI

app = FastAPI()

@app.get("/items/{item_id}")
def read_item(item_id: int, q: str = None):
    return {"item_id": item_id, "query": q}

Теперь, если вы зайдёте на http://127.0.0.1:8000/items/42?q=example, получите такой ответ:

{"item_id": 42, "query": "example"}

item_id — обязательный путь-параметр.

q — необязательный параметр запроса (query).

FastAPI автоматически валидирует типы данных, и если вы передадите что-то не то (item_id должен быть числом), получите корректное сообщение об ошибке.

 

 

2 комментария