FastAPI выкатил два релиза подряд, 0.137.0 и 0.138.0, и оба меняют привычные вещи. Самое заметное снаружи появилось в 0.138.0: метод app.frontend\(\).



Теперь собранный фронтенд раздаётся прямо из FastAPI, без отдельного nginx или статик-сервера:

app.frontend\("/", directory="dist"\)

Кладёте билд SPA в dist, одна строка, и приложение само отдаёт его на корне. Есть и router.frontend\(\) для поддерева.

Под капотом в 0.137.0 переписали то, как роутеры включаются друг в друга:
🔘раньше include\_router\(\) клонировал каждый путь в один плоский список, и в итоге на всё приложение оставался один роутер;
🔘теперь исходные объекты APIRouter и APIRoute сохраняются, а router.routes стал деревом промежуточных объектов;
🔘из-за этого маршруты можно добавлять в подроутер уже после include\_router\(\), изменения подхватятся, потому что роуты не копируются;
🔘в части случаев это ещё и экономит память.

Здесь же спрятан ломающий момент: если ваш код ходил по router.routes как по плоскому списку APIRoute, он сломается, теперь это дерево. Для таких сценариев в 0.137.2 добавили iter\_route\_contexts\(\).

@zen_of_python
Просмотры: 163
Открыть в MAX Сообщить о неточности

Репосты публикации

Публикация канала

Сообщить о неточности

Опишите, что нужно исправить. Если есть источник, добавьте ссылку.

Вы покидаете datool.ru

Ссылка ведёт на внешний сайт. datool.ru не отвечает за его содержимое — проверьте адрес, прежде чем вводить пароли или платёжные данные.

Переход через 10 с

Перейти