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