16 декабря 2022 Python


В инфраструктуре Flask есть фреймворк flask_restful для реализации Rest API и последние несколько лет там начались проблемы с развитием, в результате чего появилось несколько форков. В частности я решил попробовать построить один проект на flask_restx.

В этой заметке я буду описывать, что из этого вышло и насколько это решение хорошо для использования

С помощью RESTX я реализовал следующие API

  • авторизация на основе JWT токен
  • обновление JWT токена с помощью Refresh токента
  • получение и редактирование профиля пользователя
  • создание точки загрузки файла
  • загрука файла частями (chunks)
  • просмотр списка загруженных файлов
  • просмотр свойств файла по ID

Выглядит хорошо и лаконично, вот например API получения списка публикаций пользователя

Но если смотреть в целом, то приходится для каждой модели базы писать модель сериализации

А ещё больше напрягло то, что фреймворк просто не предлагает ни какого способа пагинации. То-есть, API легко отдаёт всю выборку, а для того чтобы отдать сред выборки в стиле Django, необходимо руками высчитать total и сломать весь красивый механизм marshal_with

Так же, нет интеграции со sqlalchemy, конечно можно найти способ

но как по мне конструкция ModelX.query.filter(**kwargs).all() выглядит так себе