FastAPI
Глава 1. Настройка проекта

Концепция FastAPI
Разработка и описание моделей FLask
FastAPI — это веб-фреймворк для создания API-интерфейсов с Python на основе стандартных типов Python.

Ключевые особенности:

  • Высокая производительность благодаря Starlette и Pydantic.
  • Быстрое написание кода.
  • Интуитивно понятный синтаксис написания:
  • Автоматическая интерактивная документация.
  • Создан на основе стандартов : OpenAPI и JSON Schema .
Строка установка Fast API

pip install fastapi

Для кодирования также необходим сервер ASGI, например Unicorn

pip install unicorn

Команда запуска сервера с файлом main.py

uvicorn main:app --reload
Файл main.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {"Hello": "World"}
адреса сервера
http://127.0.0.1:8000 - проверка работоспособности сервера после запуска
http://127.0.0.1:8000/docs - интерактивная документация по API
http://127.0.0.1:8000/redoc - альтернативная документация по API
Pydantic
Pydantic — это библиотека, которая обеспечивает проведение валидации данных и управление настройками с помощью аннотаций типов ( Перейти в документацию ).

Вы можете определить данные внутри класса, который наследует от класса BaseModel.

Модели Pydantic — это структуры, которые принимают данные, парсят и проверяют их, чтобы соответствовали указанным ограничениям.

Starlette
Starlette — фреймворк, реализующий подход ASGI. Использует асинхронность и новые функции Python 3.

Встроена поддержка:

  • GraphQL подход к разработке клиент-серверных взаимодействий.
  • Вебсокеты.
  • Набор миддлверов для работы с авторизацией/аутентификацией, CORS.
  • Встроенные асинхронные таски.
  • Тестовый клиент, построенный на requests
  • Поддержка сеансов и файлов cookie
Перейти в документацию
Дополнительные зависимости
Fast API
Используется Pydantic:

  • ujson- для более быстрого "парсинга" JSON .
  • email_validator- для проверки электронной почты.
Используется Starlette:

  • requests- Требуется, если вы хотите использовать TestClient.
  • jinja2- Требуется, если вы хотите использовать конфигурацию шаблона по умолчанию.
  • python-multipart- Требуется, если вы хотите поддерживать "разбор" формы с расширением request.form().
  • itsdangerous- Требуется для SessionMiddleware поддержки.
  • graphene- Требуется для GraphQLApp поддержки.
  • ujson- Требуется, если вы хотите использовать UJSONResponse.
Используется FastAPI/Starlette:

  • uvicorn- для сервера, который загружает и обслуживает ваше приложение.
  • orjson- Требуется, если вы хотите использовать ORJSONResponse.