DevDays Moscow 2021 Online Edition

Сурен Хоренян

Должность: Senior Engineer

Компания: Claimer

Страна: Россия

Биография

Web Backend разработчик на Python.
Работал в AdCombo над админкой и партнеркой.
Сотрудничал с МТС в разработке backend части систем видеоаналитики.
В настоящий момент занимается созданием и улучшением микросервисов и веб-приложений в компании Claimer.
Участвует в разработке и поддержке open-source библиотек на Python.
Мастер-класс

Разработка JSON:API compliant приложений на Flask при помощи Flask-COMBO-JSONAPI и combojsonapi

  1. Описание проблемы создания CRUD на Flask
    1. Сравнение с другими популярными библиотеками: Flask-Restless и Flask-RESTful
    2. Сериализация / десериализация данных
    3. Фильтрация
  2. Схемы marshmallow. Знакомство
  3. SQLAlchemy и миграции (alembic, Flask-Migrate)
    1. Знакомство
    2. Подключение к базе данных
    3. Создание моделей
    4. Создание и применение миграций
    5. Связи (one-to-one, one-to-many, many-to-many)
  1. Знакомство с flask-combo-jsonapi
    1. Знакомство с marshmallowjsonapi, в чем отличие от обычных моделей marshmallow? Модели marshmallow-jsonapi для моделей SQLAlchemy
    2. Работа со связями (объект Relationship)
    3. Создание CRUD views (ResourceList, ResourceDetail)
    4. Плагин ApiSpec для swagger (смотрим GET (list, detail), POST (create entity), PATCH (edit entity), DELETE (delete entity)
    5. Подгружаем все необходимые связи в одном запросе
    6. фильтрация (поиск по названию/телу, по категориям, по авторам, по тегам)
  2. Знакомство с combojsonapi — работа с плагинами:
    1. EventPlugin — создаём endpoint для RPC
      1. получаем количество доступных статей
      2. получаем количество опубликованных статей для конкретного автора
      3. обновляем аватар пользователя
    2. PermissionPlugin
      1. ограничение на чтение пользователей: полная информация только админам
      2. ограничение на редактирование полей: пользователей могут редактировать только админы, либо пользователь сам себя
Чем займемся:

Займёмся разработкой Flask приложения, которое работает с базой данных посредством SQLAlchemy и соблюдает спецификацию JSON:API. Будем использовать Flask-COMBO-JSONAPI и combojsonapi.

  • поговорим про сериализацию и десериализацию данных (при помощи marshmallow, познакомимся с marshmallowjsonapi)
  • поработаем с различными связями в БД: один к одному, один ко многим, многие ко многим
  • рассмотрим ограничение доступов как к целым ресурсам, так и отдельным моделям, и даже отдельным полям в моделях
  • настроим автогенерацию Swagger документации
  • научимся формировать сложные фильтры для запросов
Цель
  • Cоздать JSON:API compliant приложение на Flask
  • Поговорить про marshmallow и marshmallowjsonapi
  • Познакомить с flask-combo-jsonapi, показать ResourceList и ResourceDetail, систему плагинов
  • На примере плагина ApiSpec показать Swagger и автоматически генерируемый CRUD
  • Научить создавать RPC endpoint при помощи EventPlugin
  • Научить работать с ограничениями доступа при помощи PermissionPlugin
Целевая аудитория
  • Разработчики на Flask
  • Разработчики на Django, желающие познакомиться с разработкой на Flask
Технические требования
  • Знакомство с Flask
  • Желательно знакомство с SQLAlchemy
  • Желательно знакомство с marshmallow
  • Будет использована база данных PostgreSQL

« Назад