Top Banner
Flask, REST, validation Yehor Nazarkin twitter.com/nimnull github.com/nimnull
26

Flask, rest and data

Apr 15, 2017

Download

Technology

Yehor Nazarkin
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Flask, rest and data

Flask, REST, validation

Yehor Nazarkin twitter.com/nimnull github.com/nimnull

Page 2: Flask, rest and data

Требования

• Что в основе?

• Что хотим получить?

• Как будем расширять?

• Где храним данные?

Page 3: Flask, rest and data

REST

• хорошо подходит для web сервисов

• ресурсо-ориентированный

• отсутствие состояния (в декларации)

Page 4: Flask, rest and data

Потребности

• представление:

players/ — GET (read many), POST (create one)

players/1 — GET (read one), PUT (update one), DELETE (delete one)

Page 5: Flask, rest and data

Потребности

• фильтрация/сортировки данных:

players/?filter=joined_at__gte%3D1429821631

players/?order_fields=nickname,joined_at&order_dir=asc

Page 6: Flask, rest and data

Потребности• валидация клиентского ввода

• поддержка нескольких хранилищ

• сущности по агрегированным данным

• аутентификация (cookies, basic http, token-based)

• авторизация (группы, пользователи)

• доступ групп клиентов к разным наборам атрибутов

Page 7: Flask, rest and data

Варианты решения

• Пишем своё

• Берем готовое решение и допиливаем

Page 8: Flask, rest and data

Django?

• django-tastypie

• django-rest-framework

• django-pyston

• etc

Page 9: Flask, rest and data

Django?• Известные проблемы расширяемости

• Not Invented Here

• Эволюция проекта часто влечет отказ от поставляемых решений

Page 10: Flask, rest and data

Flask?• микро-фреймворк

• основан на werkzeug & jinja2

• большое количество расширений

• На почитать — http://flask.pocoo.org

Page 11: Flask, rest and data

Flask?

• гибкость

• простота (относительная)

• расширяемость

Page 12: Flask, rest and data

Что уже есть?• eve

• flask-restful

• flask-restless

• potion

Page 13: Flask, rest and data

Если пилим сами

• MethodView FTW!

• flask.ext….anything

Page 14: Flask, rest and data

Если пилим сами

Page 15: Flask, rest and data

Как проверять?• Imperative

• Declarative

• Mixed?

Page 16: Flask, rest and data

Где проверять• Данные от пользователей

• Отправка/обработка результатов внешних сервисов

• Схема данных хранилища

Page 17: Flask, rest and data

Note:

ORM и подобные предлагают собственные решения

Page 18: Flask, rest and data

Как проверять?

Page 19: Flask, rest and data

Как проверять?

формы (Django/WTF/etc)

Page 20: Flask, rest and data

Как проверять?• Gladiator (py3)

• Cerberus (py3)

• Schemer

• kanone

• trafaret

Page 21: Flask, rest and data

Как проверять?

Page 22: Flask, rest and data

Как проверять?

Page 23: Flask, rest and data

Как проверять?

Page 24: Flask, rest and data

Другие проблемы?

Page 25: Flask, rest and data

Вопросы?

Page 26: Flask, rest and data

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