Este documento presenta una introducción a las APIs RESTful utilizando el framework Django Tastypie. Explica conceptos clave como REST, recursos orientados a recursos, los métodos HTTP y HATEOAS. Luego muestra un ejemplo práctico de cómo crear, actualizar y eliminar recursos como tweets utilizando Tastypie. Finalmente, cubre temas como autenticación, autorización, filtros y validación de datos.
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
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
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)