FastAPI

Bill Lubanovic - O’Reilly - 2023


https://github.com/madscheme/fastapi

Коротко о главах

В первой главе Modern Web коротко представлена история развития Веба и понятия API, REST, JSON, concurrency и прочие необходимые вводные.

Вторая глава Modern Python очень кратко рассматривает базовые инструменты и возможности Python, владение которыми необходимо для разработки с FastAPI.

Вторая часть – A FastAPI tour – представляет обзор FastAPI “с высоты полёта дрона”.

В третьей главе мы пишем простейший “Hello world!” на FastAPI.

4 - concurrency, asyncio, etc.

5 - type hints, pydantic.

6 - Dependency injection.

7 - сравнение с Flask, Django.

8 - пишем веб-слой нашего приложения, с фейковым сервисным слоем (в котором живут hard-coded данные).

9 - пишем сервисный слой и тесты к нему.

10 - data layer с использование SQLite. Обработка ошибок при помощи исключений.

11 - разбираемся с аутентификацией и авторизацией. Пишем авторизацию с использованием JWT и соответствующие тесты.

12 - глава более детально посвящена тестированию при помощи pytest. Хотя много тестов уже написано к этому моменту, рассматриваются более детально возможности pytest и особенности архитектуры тестов в рассматриваемом приложении – в частности, изоляция слоёв для проведения unit-тестов. Из минусов – не рассказано, как настроить pytest, чтобы запустить все тесты одной командой. Это не сложно сделать, но хотелось бы увидеть рекомендации в книге. Приведен интересный инструмент, schemathesis, для автоматизированного тестирования API по автоматически сгенерированной документации. Вкратце упоминается нагрузочное тестирование при помощи Locust.

13 - Обзорно о деплое приложения на FastAPI. Готовых рецептов не приведено: даны общие рекомендации и ссылки на хорошие дополнительные ресурсы.

14 - Обзор баз данных (SQL, NoSQL, и даже PostSQL) и средств для работы с ними. Про Data Science и AI я пролистал, подташнивает уже от ИИ!

15 - работа с файлами. Слабовато, это всё отлично описано в документации. Даже не упомянуто про загрузку нескольких файлов одновременно! И хотелось бы увидеть, как писать тесты на эндпоинты, принимающие файлы…

16 - работа с формами и шаблонами.

Из недостатков: довольно много ошибок в коде – временами используются неверные переменные, некорректные параметры в сигнатурах функций, ошибки в именах модулей в импортах, забытые импорты, неверные роуты в декораторах… В общем, надо смотреть в оба, и код творчески дорабатывать – заодно и разобраться можно получше :)

Инструменты, применяемые в книге

  • FastAPI
  • Pydantic
  • Uvicorn
  • HTTPX
  • Requests
  • httpie
  • poetry
  • pytest
  • black
  • mypy

Прикольные цитаты

Follow one rule from Ghostbusters: Don’t cross the streams. That is, don’t let web details leak out of the Web layer, or database details out of the Data layer. (p.11)

Technically, we’re not creating anything, so a POST isn’t kosher, but if the RESTful Overlords sue us, then hey, check out the cool courthouse. (p.54)



📂 Reading | Последнее изменение: 08.04.2024 22:33