Tastypie

654 views
578 views

Published on

Presentation about tastypie framework

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
654
On SlideShare
0
From Embeds
0
Number of Embeds
57
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Tastypie

  1. 1. Tastypiewebservice API framework for django http://tastypie.org/ Vladimír Gorej CodeScale s.r.o.
  2. 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. 3. Django rest frameworky● tastypie vs django-rest-frameworkTastypie +● lepšie spracovaná dokumentácia● sexi API● RESTful Service Best Practices v 1.1 compliance
  4. 4. RESTfulGET - čítaniePOST - vytvorenie nového resourcuPUT - update existujúceho resourcuPATCH - partial updateDELETE - mazanie resourcovPodpora BULK operácii v jednom requeste.
  5. 5. ResourceResource = kolekcia príbuzných dátClass based resource implementácia● Resource● ModelResourceModelResource = RESTful wrapper nad djangomodelami.
  6. 6. Auth system● AuthenticationVerifikuje o koho ide a validuje jeho prístup kAPI. Viacero implementácii out-of-the-box.● AuthorizationVerifikuje čo môže api consumer s resourcomrobiť. Viacero implementácii out-of-the-box.
  7. 7. Validácia1. Dedením triedy Validation a implementácii metódy is_valid()2. FormValidation - implementácia validácie doklasickej django form
  8. 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. 9. Caching, Throttling, Hooks● Možnosť cachovať na strane API● 2 hotové implementácie - NoCache, SimpleCache (CACHE_BACKEND)Throttling = limiting consumerových requestovHooks = možné zasahovať kedykoľvek doprocessingu request/response cyklu, zmenu urlschémy, parent-child resourcy...
  10. 10. Putting it all togetherclass 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)
  11. 11. Ďakujem za trpezlivost ;]

×