SlideShare uma empresa Scribd logo
1 de 30
RESTful APIs con
   Tastypie
¿Quién?
●
    Santiago Basulto
●
    @santiagobasulto
●
    Athlete.com
●
    https://github.com/santiagobasulto
Temario
●
    APIs
●
    REST
●
    HTTP
●
    Ejemplo
API
●
    Consumidas por máquinas
●
    Fácil de usar y aprender (poca documentación)
●
    Difícil de “mal usar”
●
    Apuntada a la audiencia adecuada
●
    ¿Quién es tu usuario?
REST - ¿Qué?
●
    REpresentational State Transfer
●
    “Estilo de Arquitectura”
●
    Cliente – Servidor
●
    Sin Estado (Stateless)
●
    Cacheable
●
    Interfaz Uniforme
●
    Capas
REST - ¿Por Qué?
●
    Escalable
●
    Generalidad
●
    Independiente
●
    Latencia
●
    Seguridad
●
    Encapsulación
REST - ¿Cómo?
REST - ¿Cómo?




    ?
RESTful
●
    HTTP
●
    ROA
●
    HATEOAS → WTF?
HTTP
●
    Métodos (GET, POST, PUT, DELETE, PATCH)
●
    Status codes (200, 201, 202, 301, 400, 401,

404)
●
    Headers (Content-Type, Accept, Authorization)
●
    Idempotencia
●
    NO USAR COOKIES!
ROA
●
    Resource Oriented Architecture
●
    Orientado a recursos, no a acciones (SOA)
●
    Recursos identificados por URIs
●
    Recursos → Representaciones
●
    “Cool URIs don't change”
HATEOAS
●
    Hypermedia As The Engine Of Application State
●
    “Todo es un recurso identificable”
●
    “Tu usuario no conoce nada”
●
    http://roy.gbiv.com/untangled/2008/rest-apis-

must-be-hypertext-driven
●
    http://en.wikipedia.org/wiki/HATEOAS
Tastypie
●
    Aplicación de Django.
●
    Permite crear recursos basados en modelos
●
    Extensible y customizable
●
    Múltiples modos de serialización
●
    Buen uso de HTTP
●
    HATEOAS por defecto
●
    Tests y docs
Ejemplo
Tastypie - Instalación
$ pip install django-tastypie

# INSTALLED_APPS += ['tastypie']

$ manage.py syncdb
Tastypie - Setup
$ mkdir api
$ touch api/__init__.py
$ touch api/resources.py
Al código!



         Tag: step1_setup
Tastypie - Pruebas
- /api/v1/
- /api/v1/user/
- /api/v1/user/schema/
- /api/v1/user/1/
- /api/v1/user/1/?format=xml
Tastypie - Customizando
- password? is_staff? @55f6589
- Crear otro recurso (t: step2_otro_recurso)
- Fields, recursos relacionados
              (t: step3_recursos_relacionados)
Tastypie - POSTing
>>> import json
>>> import requests

>>> url = "http://127.0.0.1:8000/api/v1/tweet/"

>>> data = {'user': '/api/v1/user/1/', 'tweet': 'Hello
World!'}

>>> headers = {'content-type': 'application/json'}

>>> requests.post(url, data=json.dumps(data),
headers=headers)
Tastypie - 201
HTTP/1.0 201 CREATED
Date: Fri, 14 Sep 2012 13:32:24 GMT
Server: WSGIServer/0.1 Python/2.7
Content-Type: text/html; charset=utf-8
Location: http://127.0.0.1:8000/api/v1/tweet/2/
Tastypie - DELETE
$ curl --dump-header - -XDELETE 
> http://localhost:8000/api/v1/tweet/2/

HTTP/1.0 204 NO CONTENT
Date: Fri, 14 Sep 2012 13:53:33 GMT
Server: WSGIServer/0.1 Python/2.7.3
Content-Length: 0
Content-Type: text/html; charset=utf-8
Tastypie – PATCH
$ curl --dump-header - -H "Content-Type:
application/json" 
> -X PATCH --data '{"tweet": "PATCHed tweet"}' 
> http://127.0.0.1:8000/api/v1/tweet/3/

HTTP/1.0 202 ACCEPTED
Date: Fri, 14 Sep 2012 13:56:38 GMT
Server: WSGIServer/0.1 Python/2.7.3
Content-Type: text/html; charset=utf-8
Tastypie – PUT
$ curl --dump-header - -H "Content-Type:
application/json" 
> -X PUT --data 
> '{"tweet": "PUT tweet", "user": "/api/v1/user/2/"}'
> http://127.0.0.1:8000/api/v1/tweet/3/

HTTP/1.0 204 NO CONTENT
Date: Fri, 14 Sep 2012 14:02:48 GMT
Server: WSGIServer/0.1 Python/2.7.3
Content-Length: 0
Content-Type: text/html; charset=utf-8
Tastypie - Filtros
class Meta:
   filtering = {
       'username': ALL,
       'date_joined': ['range', 'gt', 'gte', 'lt', 'lte'],
   }
                                       (t:
step6_basic_filtering)
●
    /api/v1/user/?username__startswith=a
●
    /api/v1/user/?username__exact=admin
●
    /api/v1/user/?username__iexact=Admin
●
 /api/v1/user/?date_joined__gte=2012-09-14
Tastypie - Datos complejos
●
    A veces los datos de los recursos no son

simples
●
    Dehydrate per-field (t: step6_basic_filtering)
●
    Dehydrate general(t: step8_general_dehydrate)
●
    Hydrate general (t: step9_general_hydrate)
●
    Hydrate Fields
●
    Validación de datos (t: step10_validation)
Tastypie - Autenticación
●
    Responde a la pregunta

       > ¿Quién sos?

class Meta:
   authentication = TwitterAuthentication()

class TwitterAuthentication(Authentication):

    def is_authenticated(self, request, **kwargs):
       return True
Tastypie - Autorización
●
    Responde a la pregunta

       > ¿Podés hacer eso?

class Meta:
   authorization = TwitterAuthorization()

class TwitterAuthorization(Authorization):

    def is_authorized(self, request, object=None):
       return True
Código usado
●
    https://github.com/santiagobasulto/tastypie-pyday-cba



(Está dividido por tags)
Recursos
●
    RFC 1626
●
    RFC 5789

http://www.ics.uci.edu/~fielding/pubs/dissertation/
●




top.htm
●
    RESTful Web Services – O'reilly(ROA)
●
    http://www.w3.org/Provider/Style/URI.html

http://roy.gbiv.com/untangled/2008/rest-apis-
●

Mais conteúdo relacionado

Semelhante a RESTful APIs con Tastypie

APIs REST: Django y Go
APIs REST: Django y GoAPIs REST: Django y Go
APIs REST: Django y GoJM Robles
 
AwReporting tool introduction (Spanish)
AwReporting tool introduction (Spanish)AwReporting tool introduction (Spanish)
AwReporting tool introduction (Spanish)marcwan
 
Presentación Ruby on Rails en Softare Freedom Day 09 Buenos Aires
Presentación Ruby on Rails en Softare Freedom Day 09 Buenos AiresPresentación Ruby on Rails en Softare Freedom Day 09 Buenos Aires
Presentación Ruby on Rails en Softare Freedom Day 09 Buenos Airespeterpunk
 
Curso de Desarrollo Web de Platzi
Curso de Desarrollo Web de PlatziCurso de Desarrollo Web de Platzi
Curso de Desarrollo Web de PlatziCarlos Azaustre
 
Anatomía de implementación de un LCMS basado en moodle
Anatomía de implementación de un LCMS basado en moodleAnatomía de implementación de un LCMS basado en moodle
Anatomía de implementación de un LCMS basado en moodleJosé Luis Granda
 
Seguridad
SeguridadSeguridad
SeguridadVLASLOV
 
Coders cantabria - Junio (Offline First)
Coders cantabria - Junio (Offline First)Coders cantabria - Junio (Offline First)
Coders cantabria - Junio (Offline First)Rocío Muñoz
 
Servicios REST - PucelaTechDay
Servicios REST - PucelaTechDayServicios REST - PucelaTechDay
Servicios REST - PucelaTechDayAsier Marqués
 
Cómo crear un RESTful API con Go
Cómo crear un RESTful API con GoCómo crear un RESTful API con Go
Cómo crear un RESTful API con GoSoftware Guru
 
Google App Engine como backend de apps mobile
Google App Engine como backend de apps mobileGoogle App Engine como backend de apps mobile
Google App Engine como backend de apps mobileJM Robles
 
Web framework ligeros y micros en java barcamp 2014
Web framework ligeros y micros en java   barcamp 2014Web framework ligeros y micros en java   barcamp 2014
Web framework ligeros y micros en java barcamp 2014Carlos Camacho
 
Define y desarrolla tu primera api
Define y desarrolla tu primera apiDefine y desarrolla tu primera api
Define y desarrolla tu primera apiCloudAppi
 
PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf
PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdfPHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf
PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdfRaaulroodriguez
 
Construcción de Frameworks a partir de Smarty y PEAR
Construcción de Frameworks a partir de Smarty y PEARConstrucción de Frameworks a partir de Smarty y PEAR
Construcción de Frameworks a partir de Smarty y PEARMarcos Martinez
 

Semelhante a RESTful APIs con Tastypie (20)

APIs REST: Django y Go
APIs REST: Django y GoAPIs REST: Django y Go
APIs REST: Django y Go
 
AwReporting tool introduction (Spanish)
AwReporting tool introduction (Spanish)AwReporting tool introduction (Spanish)
AwReporting tool introduction (Spanish)
 
Introducción a REST - SymfonyVLC
Introducción a REST - SymfonyVLCIntroducción a REST - SymfonyVLC
Introducción a REST - SymfonyVLC
 
Presentación Ruby on Rails en Softare Freedom Day 09 Buenos Aires
Presentación Ruby on Rails en Softare Freedom Day 09 Buenos AiresPresentación Ruby on Rails en Softare Freedom Day 09 Buenos Aires
Presentación Ruby on Rails en Softare Freedom Day 09 Buenos Aires
 
Curso de Desarrollo Web de Platzi
Curso de Desarrollo Web de PlatziCurso de Desarrollo Web de Platzi
Curso de Desarrollo Web de Platzi
 
Anatomía de implementación de un LCMS basado en moodle
Anatomía de implementación de un LCMS basado en moodleAnatomía de implementación de un LCMS basado en moodle
Anatomía de implementación de un LCMS basado en moodle
 
Seguridad
SeguridadSeguridad
Seguridad
 
Coders cantabria - Junio (Offline First)
Coders cantabria - Junio (Offline First)Coders cantabria - Junio (Offline First)
Coders cantabria - Junio (Offline First)
 
Servicios REST - PucelaTechDay
Servicios REST - PucelaTechDayServicios REST - PucelaTechDay
Servicios REST - PucelaTechDay
 
Cómo crear un RESTful API con Go
Cómo crear un RESTful API con GoCómo crear un RESTful API con Go
Cómo crear un RESTful API con Go
 
Google App Engine como backend de apps mobile
Google App Engine como backend de apps mobileGoogle App Engine como backend de apps mobile
Google App Engine como backend de apps mobile
 
Effective Network Layer: API lovers and Apps
Effective Network Layer: API lovers and AppsEffective Network Layer: API lovers and Apps
Effective Network Layer: API lovers and Apps
 
Web framework ligeros y micros en java barcamp 2014
Web framework ligeros y micros en java   barcamp 2014Web framework ligeros y micros en java   barcamp 2014
Web framework ligeros y micros en java barcamp 2014
 
Go 101: Primeros Pasos
Go 101: Primeros PasosGo 101: Primeros Pasos
Go 101: Primeros Pasos
 
Html5
Html5Html5
Html5
 
Django
DjangoDjango
Django
 
Define y desarrolla tu primera api
Define y desarrolla tu primera apiDefine y desarrolla tu primera api
Define y desarrolla tu primera api
 
RAML
RAMLRAML
RAML
 
PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf
PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdfPHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf
PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf
 
Construcción de Frameworks a partir de Smarty y PEAR
Construcción de Frameworks a partir de Smarty y PEARConstrucción de Frameworks a partir de Smarty y PEAR
Construcción de Frameworks a partir de Smarty y PEAR
 

Último

Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanamcerpam
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxMiguelAtencio10
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...JohnRamos830530
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxFederico Castellari
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estossgonzalezp1
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativanicho110
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.FlorenciaCattelani
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxAlan779941
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxJorgeParada26
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIhmpuellon
 

Último (12)

Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 

RESTful APIs con Tastypie

  • 1. RESTful APIs con Tastypie
  • 2. ¿Quién? ● Santiago Basulto ● @santiagobasulto ● Athlete.com ● https://github.com/santiagobasulto
  • 3. Temario ● APIs ● REST ● HTTP ● Ejemplo
  • 4. API ● Consumidas por máquinas ● Fácil de usar y aprender (poca documentación) ● Difícil de “mal usar” ● Apuntada a la audiencia adecuada ● ¿Quién es tu usuario?
  • 5. REST - ¿Qué? ● REpresentational State Transfer ● “Estilo de Arquitectura” ● Cliente – Servidor ● Sin Estado (Stateless) ● Cacheable ● Interfaz Uniforme ● Capas
  • 6. REST - ¿Por Qué? ● Escalable ● Generalidad ● Independiente ● Latencia ● Seguridad ● Encapsulación
  • 9. RESTful ● HTTP ● ROA ● HATEOAS → WTF?
  • 10. HTTP ● Métodos (GET, POST, PUT, DELETE, PATCH) ● Status codes (200, 201, 202, 301, 400, 401, 404) ● Headers (Content-Type, Accept, Authorization) ● Idempotencia ● NO USAR COOKIES!
  • 11. ROA ● Resource Oriented Architecture ● Orientado a recursos, no a acciones (SOA) ● Recursos identificados por URIs ● Recursos → Representaciones ● “Cool URIs don't change”
  • 12. HATEOAS ● Hypermedia As The Engine Of Application State ● “Todo es un recurso identificable” ● “Tu usuario no conoce nada” ● http://roy.gbiv.com/untangled/2008/rest-apis- must-be-hypertext-driven ● http://en.wikipedia.org/wiki/HATEOAS
  • 13. Tastypie ● Aplicación de Django. ● Permite crear recursos basados en modelos ● Extensible y customizable ● Múltiples modos de serialización ● Buen uso de HTTP ● HATEOAS por defecto ● Tests y docs
  • 15. Tastypie - Instalación $ pip install django-tastypie # INSTALLED_APPS += ['tastypie'] $ manage.py syncdb
  • 16. Tastypie - Setup $ mkdir api $ touch api/__init__.py $ touch api/resources.py
  • 17. Al código! Tag: step1_setup
  • 18. Tastypie - Pruebas - /api/v1/ - /api/v1/user/ - /api/v1/user/schema/ - /api/v1/user/1/ - /api/v1/user/1/?format=xml
  • 19. Tastypie - Customizando - password? is_staff? @55f6589 - Crear otro recurso (t: step2_otro_recurso) - Fields, recursos relacionados (t: step3_recursos_relacionados)
  • 20. Tastypie - POSTing >>> import json >>> import requests >>> url = "http://127.0.0.1:8000/api/v1/tweet/" >>> data = {'user': '/api/v1/user/1/', 'tweet': 'Hello World!'} >>> headers = {'content-type': 'application/json'} >>> requests.post(url, data=json.dumps(data), headers=headers)
  • 21. Tastypie - 201 HTTP/1.0 201 CREATED Date: Fri, 14 Sep 2012 13:32:24 GMT Server: WSGIServer/0.1 Python/2.7 Content-Type: text/html; charset=utf-8 Location: http://127.0.0.1:8000/api/v1/tweet/2/
  • 22. Tastypie - DELETE $ curl --dump-header - -XDELETE > http://localhost:8000/api/v1/tweet/2/ HTTP/1.0 204 NO CONTENT Date: Fri, 14 Sep 2012 13:53:33 GMT Server: WSGIServer/0.1 Python/2.7.3 Content-Length: 0 Content-Type: text/html; charset=utf-8
  • 23. Tastypie – PATCH $ curl --dump-header - -H "Content-Type: application/json" > -X PATCH --data '{"tweet": "PATCHed tweet"}' > http://127.0.0.1:8000/api/v1/tweet/3/ HTTP/1.0 202 ACCEPTED Date: Fri, 14 Sep 2012 13:56:38 GMT Server: WSGIServer/0.1 Python/2.7.3 Content-Type: text/html; charset=utf-8
  • 24. Tastypie – PUT $ curl --dump-header - -H "Content-Type: application/json" > -X PUT --data > '{"tweet": "PUT tweet", "user": "/api/v1/user/2/"}' > http://127.0.0.1:8000/api/v1/tweet/3/ HTTP/1.0 204 NO CONTENT Date: Fri, 14 Sep 2012 14:02:48 GMT Server: WSGIServer/0.1 Python/2.7.3 Content-Length: 0 Content-Type: text/html; charset=utf-8
  • 25. Tastypie - Filtros class Meta: filtering = { 'username': ALL, 'date_joined': ['range', 'gt', 'gte', 'lt', 'lte'], } (t: step6_basic_filtering) ● /api/v1/user/?username__startswith=a ● /api/v1/user/?username__exact=admin ● /api/v1/user/?username__iexact=Admin ● /api/v1/user/?date_joined__gte=2012-09-14
  • 26. Tastypie - Datos complejos ● A veces los datos de los recursos no son simples ● Dehydrate per-field (t: step6_basic_filtering) ● Dehydrate general(t: step8_general_dehydrate) ● Hydrate general (t: step9_general_hydrate) ● Hydrate Fields ● Validación de datos (t: step10_validation)
  • 27. Tastypie - Autenticación ● Responde a la pregunta > ¿Quién sos? class Meta: authentication = TwitterAuthentication() class TwitterAuthentication(Authentication): def is_authenticated(self, request, **kwargs): return True
  • 28. Tastypie - Autorización ● Responde a la pregunta > ¿Podés hacer eso? class Meta: authorization = TwitterAuthorization() class TwitterAuthorization(Authorization): def is_authorized(self, request, object=None): return True
  • 29. Código usado ● https://github.com/santiagobasulto/tastypie-pyday-cba (Está dividido por tags)
  • 30. Recursos ● RFC 1626 ● RFC 5789 http://www.ics.uci.edu/~fielding/pubs/dissertation/ ● top.htm ● RESTful Web Services – O'reilly(ROA) ● http://www.w3.org/Provider/Style/URI.html http://roy.gbiv.com/untangled/2008/rest-apis- ●