SlideShare a Scribd company logo
1 of 11
Download to read offline
Tastypie
webservice API framework for django

         http://tastypie.org/

                                Vladimír Gorej
                                CodeScale s.r.o.
Kto som
● Vladimír Gorej
● backend vývoj aukčného produktu pre
  spoločnost CodeScale s.r.o.

Technology stack:
● python
● django
● postgresql
● tastypie framework
Django rest frameworky
● tastypie vs django-rest-framework

Tastypie +
● lepšie spracovaná dokumentácia
● sexi API
● RESTful Service Best Practices v 1.1
  compliance
RESTful

GET - čítanie
POST - vytvorenie nového resourcu
PUT - update existujúceho resourcu
PATCH - partial update
DELETE - mazanie resourcov

Podpora BULK operácii v jednom requeste.
Resource
Resource = kolekcia príbuzných dát

Class based resource implementácia
● Resource
● ModelResource


ModelResource = RESTful wrapper nad django
modelami.
Auth system
● Authentication

Verifikuje o koho ide a validuje jeho prístup k
API. Viacero implementácii out-of-the-box.

● Authorization

Verifikuje čo môže api consumer s resourcom
robiť. Viacero implementácii out-of-the-box.
Validácia

1. Dedením triedy Validation a implementácii
   metódy is_valid()


2. FormValidation - implementácia validácie do
klasickej django form
Serializácia
● Serializery riadia to, ako sú data
  prezentované consumerovi API
● Defaultne k dizpozícii: json, jsonp, xml, yaml,
  html, plist
● Možnosť jednoduchej implemtácie vlastného
  formátu
● Api consumer si môže sám zvoliť v akom
  formáte chce/potrebuje komunikovať
Caching, Throttling, Hooks

● Možnosť cachovať na strane API
● 2 hotové implementácie - NoCache,
  SimpleCache (CACHE_BACKEND)

Throttling = limiting consumerových requestov

Hooks = možné zasahovať kedykoľvek do
processingu request/response cyklu, zmenu url
schémy, parent-child resourcy...
Putting it all together
class UserResource(ModelResource):
   class Meta:
     queryset = User.objects.all()
     resource_name = 'auth/users'
     filtering = {
         'email': ALL
     }
     excludes = ['password']
     authentication = ApiConsumerAuthentication()
     authorization = DjangoAuthorization()
     validation = FormValidation(form_class=MyUserForm)
     serialize = Serializer(['json', 'xml'])
     throttle = CacheThrottle(throttle_at=100, timeframe=3600)
     cache = SimpleCache(timeout=10)
Ďakujem za trpezlivost ;]

More Related Content

Similar to Tastypie

Ako si vybrať programovací jazyk a framework?
Ako si vybrať programovací jazyk a framework?Ako si vybrať programovací jazyk a framework?
Ako si vybrať programovací jazyk a framework?Jano Suchal
 
Aký programovací jazyk a framework si vybrať a prečo?
Aký programovací jazyk a framework si vybrať a prečo?Aký programovací jazyk a framework si vybrať a prečo?
Aký programovací jazyk a framework si vybrať a prečo?Jano Suchal
 
BarCamp - Zváračský kurz na Web
BarCamp - Zváračský kurz na WebBarCamp - Zváračský kurz na Web
BarCamp - Zváračský kurz na WebJuraj Michálek
 
Bezpečnosť webových aplikácií (Martin Zajíček)
Bezpečnosť webových aplikácií (Martin Zajíček)Bezpečnosť webových aplikácií (Martin Zajíček)
Bezpečnosť webových aplikácií (Martin Zajíček)DCIT, a.s.
 
AppMonitor Insight Edition
AppMonitor Insight EditionAppMonitor Insight Edition
AppMonitor Insight EditionAdam Lieskovsky
 
Require.JS & Backbone.JS
Require.JS & Backbone.JSRequire.JS & Backbone.JS
Require.JS & Backbone.JSsrigi
 
MTM - Flow3
MTM - Flow3MTM - Flow3
MTM - Flow3tetak
 
Ať se z kódu nepráší!
Ať se z kódu nepráší!Ať se z kódu nepráší!
Ať se z kódu nepráší!Juraj Michálek
 
Zváračský kurz na BlazeDS a Google App Engine
Zváračský kurz na BlazeDS a Google App EngineZváračský kurz na BlazeDS a Google App Engine
Zváračský kurz na BlazeDS a Google App EngineJuraj Michálek
 
Junior Internet 2015 - PHP moderne a správne
Junior Internet 2015 - PHP moderne a správneJunior Internet 2015 - PHP moderne a správne
Junior Internet 2015 - PHP moderne a správneTomáš Tatarko
 
Frontend Masters Košice - oAuth
Frontend Masters Košice - oAuthFrontend Masters Košice - oAuth
Frontend Masters Košice - oAuthbart-sk
 
Drupal a OOP [DrupalCamp SK 2013]
Drupal a OOP [DrupalCamp SK 2013]Drupal a OOP [DrupalCamp SK 2013]
Drupal a OOP [DrupalCamp SK 2013]David Lukac
 
Drupal a OOP [DrupalCamp SK 2013]
Drupal a OOP [DrupalCamp SK 2013]Drupal a OOP [DrupalCamp SK 2013]
Drupal a OOP [DrupalCamp SK 2013]David Lukac
 
LaMSfET presentation 31.3.2009
LaMSfET presentation 31.3.2009LaMSfET presentation 31.3.2009
LaMSfET presentation 31.3.2009coumaxmi
 

Similar to Tastypie (16)

Ako si vybrať programovací jazyk a framework?
Ako si vybrať programovací jazyk a framework?Ako si vybrať programovací jazyk a framework?
Ako si vybrať programovací jazyk a framework?
 
Aký programovací jazyk a framework si vybrať a prečo?
Aký programovací jazyk a framework si vybrať a prečo?Aký programovací jazyk a framework si vybrať a prečo?
Aký programovací jazyk a framework si vybrať a prečo?
 
BarCamp - Zváračský kurz na Web
BarCamp - Zváračský kurz na WebBarCamp - Zváračský kurz na Web
BarCamp - Zváračský kurz na Web
 
Php sec
Php secPhp sec
Php sec
 
Bezpečnosť webových aplikácií (Martin Zajíček)
Bezpečnosť webových aplikácií (Martin Zajíček)Bezpečnosť webových aplikácií (Martin Zajíček)
Bezpečnosť webových aplikácií (Martin Zajíček)
 
AppMonitor Insight Edition
AppMonitor Insight EditionAppMonitor Insight Edition
AppMonitor Insight Edition
 
Require.JS & Backbone.JS
Require.JS & Backbone.JSRequire.JS & Backbone.JS
Require.JS & Backbone.JS
 
Flask vs django
Flask vs djangoFlask vs django
Flask vs django
 
MTM - Flow3
MTM - Flow3MTM - Flow3
MTM - Flow3
 
Ať se z kódu nepráší!
Ať se z kódu nepráší!Ať se z kódu nepráší!
Ať se z kódu nepráší!
 
Zváračský kurz na BlazeDS a Google App Engine
Zváračský kurz na BlazeDS a Google App EngineZváračský kurz na BlazeDS a Google App Engine
Zváračský kurz na BlazeDS a Google App Engine
 
Junior Internet 2015 - PHP moderne a správne
Junior Internet 2015 - PHP moderne a správneJunior Internet 2015 - PHP moderne a správne
Junior Internet 2015 - PHP moderne a správne
 
Frontend Masters Košice - oAuth
Frontend Masters Košice - oAuthFrontend Masters Košice - oAuth
Frontend Masters Košice - oAuth
 
Drupal a OOP [DrupalCamp SK 2013]
Drupal a OOP [DrupalCamp SK 2013]Drupal a OOP [DrupalCamp SK 2013]
Drupal a OOP [DrupalCamp SK 2013]
 
Drupal a OOP [DrupalCamp SK 2013]
Drupal a OOP [DrupalCamp SK 2013]Drupal a OOP [DrupalCamp SK 2013]
Drupal a OOP [DrupalCamp SK 2013]
 
LaMSfET presentation 31.3.2009
LaMSfET presentation 31.3.2009LaMSfET presentation 31.3.2009
LaMSfET presentation 31.3.2009
 

Tastypie

  • 1. Tastypie webservice API framework for django http://tastypie.org/ Vladimír Gorej CodeScale s.r.o.
  • 2. Kto som ● Vladimír Gorej ● backend vývoj aukčného produktu pre spoločnost CodeScale s.r.o. Technology stack: ● python ● django ● postgresql ● tastypie framework
  • 3. Django rest frameworky ● tastypie vs django-rest-framework Tastypie + ● lepšie spracovaná dokumentácia ● sexi API ● RESTful Service Best Practices v 1.1 compliance
  • 4. RESTful GET - čítanie POST - vytvorenie nového resourcu PUT - update existujúceho resourcu PATCH - partial update DELETE - mazanie resourcov Podpora BULK operácii v jednom requeste.
  • 5. Resource Resource = kolekcia príbuzných dát Class based resource implementácia ● Resource ● ModelResource ModelResource = RESTful wrapper nad django modelami.
  • 6. Auth system ● Authentication Verifikuje o koho ide a validuje jeho prístup k API. Viacero implementácii out-of-the-box. ● Authorization Verifikuje čo môže api consumer s resourcom robiť. Viacero implementácii out-of-the-box.
  • 7. Validácia 1. Dedením triedy Validation a implementácii metódy is_valid() 2. FormValidation - implementácia validácie do klasickej django form
  • 8. Serializácia ● Serializery riadia to, ako sú data prezentované consumerovi API ● Defaultne k dizpozícii: json, jsonp, xml, yaml, html, plist ● Možnosť jednoduchej implemtácie vlastného formátu ● Api consumer si môže sám zvoliť v akom formáte chce/potrebuje komunikovať
  • 9. Caching, Throttling, Hooks ● Možnosť cachovať na strane API ● 2 hotové implementácie - NoCache, SimpleCache (CACHE_BACKEND) Throttling = limiting consumerových requestov Hooks = možné zasahovať kedykoľvek do processingu request/response cyklu, zmenu url schémy, parent-child resourcy...
  • 10. Putting it all together class UserResource(ModelResource): class Meta: queryset = User.objects.all() resource_name = 'auth/users' filtering = { 'email': ALL } excludes = ['password'] authentication = ApiConsumerAuthentication() authorization = DjangoAuthorization() validation = FormValidation(form_class=MyUserForm) serialize = Serializer(['json', 'xml']) throttle = CacheThrottle(throttle_at=100, timeframe=3600) cache = SimpleCache(timeout=10)