SlideShare une entreprise Scribd logo
1  sur  26
Télécharger pour lire hors ligne
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

Contenu connexe

Tendances

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

Tendances (7)

Умное SEO - инструменты
Умное SEO - инструментыУмное SEO - инструменты
Умное SEO - инструменты
 
15.03.19 WebPromo SEOday SEO-инсайты из логов: от WP блога до международного ...
15.03.19 WebPromo SEOday SEO-инсайты из логов: от WP блога до международного ...15.03.19 WebPromo SEOday SEO-инсайты из логов: от WP блога до международного ...
15.03.19 WebPromo SEOday SEO-инсайты из логов: от WP блога до международного ...
 
Продвинутый мультисайтинг
Продвинутый мультисайтингПродвинутый мультисайтинг
Продвинутый мультисайтинг
 
Азы мультисайтинга
Азы мультисайтингаАзы мультисайтинга
Азы мультисайтинга
 
Drupal 8 API для разработчиков
Drupal 8 API для разработчиковDrupal 8 API для разработчиков
Drupal 8 API для разработчиков
 
Как не утонуть в мегабайтах JS-кода
Как не утонуть в мегабайтах JS-кодаКак не утонуть в мегабайтах JS-кода
Как не утонуть в мегабайтах JS-кода
 
HSE{Consult}: DevOps – новая методология разработки
HSE{Consult}: DevOps – новая методология разработкиHSE{Consult}: DevOps – новая методология разработки
HSE{Consult}: DevOps – новая методология разработки
 

Similaire à Flask, rest and data

Blackbox-тестирование веб-приложений
Blackbox-тестирование веб-приложенийBlackbox-тестирование веб-приложений
Blackbox-тестирование веб-приложенийbeched
 
Безопасность Node.js / Илья Вербицкий (Независимый консультант)
Безопасность Node.js / Илья Вербицкий (Независимый консультант)Безопасность Node.js / Илья Вербицкий (Независимый консультант)
Безопасность Node.js / Илья Вербицкий (Независимый консультант)Ontico
 
Lesson1
Lesson1Lesson1
Lesson1jinol
 
OAuthоризация и API социальных сетей
OAuthоризация и API социальных сетейOAuthоризация и API социальных сетей
OAuthоризация и API социальных сетейАртём Курапов
 
Система обработки бизнес-логики server-side приложения на Groovy
Система обработки бизнес-логики server-side приложения на GroovyСистема обработки бизнес-логики server-side приложения на Groovy
Система обработки бизнес-логики server-side приложения на GroovyRegn
 
Web осень 2012 лекция 11
Web осень 2012 лекция 11Web осень 2012 лекция 11
Web осень 2012 лекция 11Technopark
 
"xCAT: удобное администрирование дата-центра". Антон Турецкий, Badoo
"xCAT: удобное администрирование дата-центра". Антон Турецкий, Badoo"xCAT: удобное администрирование дата-центра". Антон Турецкий, Badoo
"xCAT: удобное администрирование дата-центра". Антон Турецкий, BadooYandex
 
"Morphology of Modern Data Center Networks: Overview
"Morphology of Modern Data Center Networks: Overview"Morphology of Modern Data Center Networks: Overview
"Morphology of Modern Data Center Networks: OverviewYandex
 
Информационная безопасность и web-приложения
Информационная безопасность и web-приложенияИнформационная безопасность и web-приложения
Информационная безопасность и web-приложенияMaxim Krentovskiy
 
Алексей Бережной - http-протокол
Алексей Бережной - http-протоколАлексей Бережной - http-протокол
Алексей Бережной - http-протоколYandex
 
Построение системы аналитики
Построение системы аналитикиПостроение системы аналитики
Построение системы аналитикиИлья Середа
 
Cоциальный граф "Одноклассников" в myTarget
Cоциальный граф "Одноклассников" в myTargetCоциальный граф "Одноклассников" в myTarget
Cоциальный граф "Одноклассников" в myTargetOleg Tsarev
 
DUMP-2015: «Использование социального графа одноклассников в Target Mail.Ru» ...
DUMP-2015: «Использование социального графа одноклассников в Target Mail.Ru» ...DUMP-2015: «Использование социального графа одноклассников в Target Mail.Ru» ...
DUMP-2015: «Использование социального графа одноклассников в Target Mail.Ru» ...it-people
 
Социальный граф Одноклассников в Target Mail.Ru
Социальный граф Одноклассников в Target Mail.RuСоциальный граф Одноклассников в Target Mail.Ru
Социальный граф Одноклассников в Target Mail.RuCodeFest
 
Хорошо поддерживаемое в продакшне приложение / Николай Сивко (okmeter.io)
Хорошо поддерживаемое в продакшне приложение / Николай Сивко (okmeter.io)Хорошо поддерживаемое в продакшне приложение / Николай Сивко (okmeter.io)
Хорошо поддерживаемое в продакшне приложение / Николай Сивко (okmeter.io)Ontico
 
Обзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновОбзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновOntico
 

Similaire à Flask, rest and data (20)

Sphinx
SphinxSphinx
Sphinx
 
REST
RESTREST
REST
 
BPMonline OData
BPMonline ODataBPMonline OData
BPMonline OData
 
Blackbox-тестирование веб-приложений
Blackbox-тестирование веб-приложенийBlackbox-тестирование веб-приложений
Blackbox-тестирование веб-приложений
 
Безопасность Node.js / Илья Вербицкий (Независимый консультант)
Безопасность Node.js / Илья Вербицкий (Независимый консультант)Безопасность Node.js / Илья Вербицкий (Независимый консультант)
Безопасность Node.js / Илья Вербицкий (Независимый консультант)
 
Lesson1
Lesson1Lesson1
Lesson1
 
OAuthоризация и API социальных сетей
OAuthоризация и API социальных сетейOAuthоризация и API социальных сетей
OAuthоризация и API социальных сетей
 
Система обработки бизнес-логики server-side приложения на Groovy
Система обработки бизнес-логики server-side приложения на GroovyСистема обработки бизнес-логики server-side приложения на Groovy
Система обработки бизнес-логики server-side приложения на Groovy
 
Web осень 2012 лекция 11
Web осень 2012 лекция 11Web осень 2012 лекция 11
Web осень 2012 лекция 11
 
Sivko
SivkoSivko
Sivko
 
"xCAT: удобное администрирование дата-центра". Антон Турецкий, Badoo
"xCAT: удобное администрирование дата-центра". Антон Турецкий, Badoo"xCAT: удобное администрирование дата-центра". Антон Турецкий, Badoo
"xCAT: удобное администрирование дата-центра". Антон Турецкий, Badoo
 
"Morphology of Modern Data Center Networks: Overview
"Morphology of Modern Data Center Networks: Overview"Morphology of Modern Data Center Networks: Overview
"Morphology of Modern Data Center Networks: Overview
 
Информационная безопасность и web-приложения
Информационная безопасность и web-приложенияИнформационная безопасность и web-приложения
Информационная безопасность и web-приложения
 
Алексей Бережной - http-протокол
Алексей Бережной - http-протоколАлексей Бережной - http-протокол
Алексей Бережной - http-протокол
 
Построение системы аналитики
Построение системы аналитикиПостроение системы аналитики
Построение системы аналитики
 
Cоциальный граф "Одноклассников" в myTarget
Cоциальный граф "Одноклассников" в myTargetCоциальный граф "Одноклассников" в myTarget
Cоциальный граф "Одноклассников" в myTarget
 
DUMP-2015: «Использование социального графа одноклассников в Target Mail.Ru» ...
DUMP-2015: «Использование социального графа одноклассников в Target Mail.Ru» ...DUMP-2015: «Использование социального графа одноклассников в Target Mail.Ru» ...
DUMP-2015: «Использование социального графа одноклассников в Target Mail.Ru» ...
 
Социальный граф Одноклассников в Target Mail.Ru
Социальный граф Одноклассников в Target Mail.RuСоциальный граф Одноклассников в Target Mail.Ru
Социальный граф Одноклассников в Target Mail.Ru
 
Хорошо поддерживаемое в продакшне приложение / Николай Сивко (okmeter.io)
Хорошо поддерживаемое в продакшне приложение / Николай Сивко (okmeter.io)Хорошо поддерживаемое в продакшне приложение / Николай Сивко (okmeter.io)
Хорошо поддерживаемое в продакшне приложение / Николай Сивко (okmeter.io)
 
Обзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновОбзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий Насретдинов
 

Plus de Yehor Nazarkin

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

Plus de Yehor Nazarkin (6)

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

Flask, rest and data