SlideShare a Scribd company logo
Flask, REST, validation
Yehor Nazarkin
twitter.com/nimnull
github.com/nimnull
Требования
• Что в основе?
• Что хотим получить?
• Как будем расширять?
• Где храним данные?
REST
• хорошо подходит для web сервисов
• ресурсо-ориентированный
• отсутствие состояния (в декларации)
Потребности
• представление:
players/ — GET (read many), POST (create one)
players/1 — GET (read one), PUT (update one), DELETE (delete one)
Потребности
• фильтрация/сортировки данных:
players/?filter=joined_at__gte%3D1429821631
players/?
order_fields=nickname,joined_at&order_dir=asc
Потребности
• валидация клиентского ввода
• поддержка нескольких хранилищ
• сущности по агрегированным данным
• аутентификация (cookies, basic http, token-based)
• авторизация (группы, пользователи)
• доступ групп клиентов к разным наборам атрибутов
Варианты решения
• Пишем своё
• Берем готовое решение и допиливаем
Django?
• django-tastypie
• django-rest-framework
• django-pyston
• etc
Django?
• Известные проблемы
расширяемости
• Not Invented Here
• Эволюция проекта часто влечет
отказ от поставляемых решений
Flask?
• микро-фреймворк
• основан на werkzeug & jinja2
• большое количество расширений
• На почитать — http://flask.pocoo.org
Flask?
• гибкость
• простота (относительная)
• расширяемость
Что уже есть?
• eve
• flask-restful
• flask-restless
• potion
Если пилим сами
• MethodView FTW!
• flask.ext….anything
Если пилим сами
Как проверять?
• Imperative
• Declarative
• Mixed?
Где проверять
• Данные от пользователей
• Отправка/обработка результатов
внешних сервисов
• Схема данных хранилища
Note:
ORM и подобные предлагают
собственные решения
Как проверять?
Как проверять?
формы (Django/WTF/etc)
Как проверять?
• Gladiator (py3)
• Cerberus (py3)
• Schemer
• kanone
• trafaret
Как проверять?
Как проверять?
Как проверять?
Другие проблемы?
Вопросы?
Links:
• Nested resources — https://github.com/alanjds/drf-nested-routers
• Gladiator — https://github.com/alanjds/drf-nested-routers
• Schemer — https://github.com/gamechanger/schemer
• Trafaret — https://github.com/deepwalker/trafaret

More Related Content

PDF
Authentication security
Olga Lavrentieva
 
PDF
диплом
Gleb Lozhkovoy
 
PDF
«Ещё один Поиск Яндекса» Александр Кошелев, Яндекс
it-people
 
PPTX
Разведка боем
Дмитрий Бумов
 
PPTX
«Где на самом деле начинается конверсия», Анастасия Берсенева, ТопЭксперт
it-people
 
PDF
2014.12.06 06 Алёна Паньшина — Простой обмен данными с пользователями на прим...
HappyDev
 
PPS
Fuzz.txt
Positive Hack Days
 
PDF
Ещё один поиск Яндекса
Alexander Koshelev
 
Authentication security
Olga Lavrentieva
 
диплом
Gleb Lozhkovoy
 
«Ещё один Поиск Яндекса» Александр Кошелев, Яндекс
it-people
 
Разведка боем
Дмитрий Бумов
 
«Где на самом деле начинается конверсия», Анастасия Берсенева, ТопЭксперт
it-people
 
2014.12.06 06 Алёна Паньшина — Простой обмен данными с пользователями на прим...
HappyDev
 
Ещё один поиск Яндекса
Alexander Koshelev
 

What's hot (7)

PPTX
Умное SEO - инструменты
Gedocorp | Гедокорп
 
PDF
15.03.19 WebPromo SEOday SEO-инсайты из логов: от WP блога до международного ...
Vladislav Morgun
 
PPT
Продвинутый мультисайтинг
Drupal Camp Kyiv
 
ODP
Азы мультисайтинга
Drupal Camp Kyiv
 
PPTX
Drupal 8 API для разработчиков
DrupalSPB
 
PPTX
Как не утонуть в мегабайтах JS-кода
tfmailru
 
PPT
HSE{Consult}: DevOps – новая методология разработки
Business incubator HSE
 
Умное SEO - инструменты
Gedocorp | Гедокорп
 
15.03.19 WebPromo SEOday SEO-инсайты из логов: от WP блога до международного ...
Vladislav Morgun
 
Продвинутый мультисайтинг
Drupal Camp Kyiv
 
Азы мультисайтинга
Drupal Camp Kyiv
 
Drupal 8 API для разработчиков
DrupalSPB
 
Как не утонуть в мегабайтах JS-кода
tfmailru
 
HSE{Consult}: DevOps – новая методология разработки
Business incubator HSE
 
Ad

More from Yehor Nazarkin (6)

PDF
Inter-process data exchange in Python
Yehor Nazarkin
 
PDF
Flask, гордость и предубеждение
Yehor Nazarkin
 
PDF
Chaplin.js in real life
Yehor Nazarkin
 
PDF
Rest in flask
Yehor Nazarkin
 
PDF
обзор Python
Yehor Nazarkin
 
PDF
GAE - плюсы/минусы/подводные камни
Yehor Nazarkin
 
Inter-process data exchange in Python
Yehor Nazarkin
 
Flask, гордость и предубеждение
Yehor Nazarkin
 
Chaplin.js in real life
Yehor Nazarkin
 
Rest in flask
Yehor Nazarkin
 
обзор Python
Yehor Nazarkin
 
GAE - плюсы/минусы/подводные камни
Yehor Nazarkin
 
Ad

Flask, rest and data