apis rest: django y go
DESCRIPTION
Intro y charla sobre APIs REST en Django y Go del 5º Betabeers Granada del 28 de AbrilTRANSCRIPT
5º Betabeers Granada
+ info: betabeers.com / @betabeersGRX / @jmrobles
#bbGRX
#bbGRX
Betabeers entre birraspatrocinado por
Menú del día
#bbGRX
1º Mesa redonda: “APIs REST con Parse, Django y Go con David Lázaro de Obsso (@_dlazaro) y un servidor (@jmrobles)2º Proyecto opensource: Event Jukebox3º Preguntas y respuestasPostre: Networking entre birras!
Mesa redonda
#bbGRX
APIS: La mejor merienda para tu App
APIS
#bbGRX
ConceptosAPI
RESTfulAuth basic
OAuth2Backbone AJAX
Throttling
Status codes XMLJSON
Resources
cURL
URL
HTTP
GET/POST/PUT/DELETED
APIS
#bbGRX
Ejemplo
curl -X GET http://api.ejemplo.com/v1/products
APIS
#bbGRX
Ejemplo
curl -X GET http://api.ejemplo.com/v1/products
Resultado
200 OK[{‘id’: ‘1’, ‘name’:’iphone’}, {‘id’:’2’, ‘name’: ‘iPod’}, {‘id’: ‘3’, ‘name’: ‘MacBook’}]
APIS
#bbGRX
Ejemplocurl -X GET http://api.ejemplo.com/v1/products/1
APIS
#bbGRX
Ejemplocurl -X GET http://api.ejemplo.com/v1/products/1
Resultado
200 OK{‘id’: ‘1’, ‘name’:’iphone’}
APIS
#bbGRX
Ejemplocurl -X POST -d {‘id’: ‘5’, ‘name’: ‘iPad’} http://api.ejemplo.com/v1/products/
APIS
#bbGRX
Ejemplocurl -X POST -d {‘id’: ‘5’, ‘name’: ‘iPad’} http://api.ejemplo.com/v1/products/
Resultado
201 Created
APIS
#bbGRX
Ejemplo
curl -X PUT -d {‘id’: ‘5’, ‘name’: ‘iPad’} http://api.ejemplo.com/v1/products/5
Actualizar
Eliminar
curl -X DELETE http://api.ejemplo.com/v1/products/5
APIS
#bbGRX
¿Por qué APIs REST?
● Interoperabilidad● Flexibilidad● Sencillez● Router-friendly
APIS
#bbGRX
¿Cómo desarrollar APIs REST?
● Una API REST se puede implementar en cualquier lenguaje● Basta seguir el esquema● Principales frameworks
○ PHP => BulletPHP○ Python/Django => REST Framework Tastypie○ Go => Go JSON REST
APIS
#bbGRX
¿Cómo desarrollar APIs REST?
● Una API REST se puede implementar en cualquier lenguaje● Basta seguir el esquema● Principales frameworks
○ PHP => BulletPHP○ Python/Django => REST Framework Tastypie○ Go => Go JSON REST○ RAD Apps => Parse
APIS
#bbGRX
APIs con Vitaminas
● Cache => Memcached, redis, …● Lotes por request● Throttling (a nadie le gusta un DDOS)● Compress
APIS
#bbGRX
Parse
David Lázaro@_dlazaro
APIS
#bbGRX
REST Framework y Go JSON REST
JM Robles@jmrobles
APIS
#bbGRX
REST Framework
● REST Framework para Django● Maduro● Lo uso en producción● Se integra bien con OAuth2● Flexibilidad para crear
“Authorizers”● Implementa varios tipos de
transporte: JSON, XML, YAML ...
APIS
#bbGRX
Serializersclass Comment(object):
def __init__(self, email, content, created=None):
self.email = email
self.content = content
self.created = created or datetime.datetime.now()
comment = Comment(email='[email protected]', content='foo
bar')
APIS
#bbGRX
Serializersclass CommentSerializer(serializers.Serializer):
email = serializers.EmailField()
content = serializers.CharField(max_length=200)
created = serializers.DateTimeField()
def restore_object(self, attrs, instance=None):
if instance is not None:
instance.email = attrs.get('email', instance.email)
instance.content = attrs.get('content', instance.content)
instance.created = attrs.get('created', instance.created)
return instance
return Comment(**attrs)
APIS
#bbGRX
DEMO
APIS
#bbGRX
Go JSON REST ● Micro REST framework para Go● Muy verde● Para pequeños proyectos● Muy rápido● Fácil de distribuir: 1 binario
APIS
#bbGRX
Go (aka Golang)● http://slideshare.com/jmroblesh/go-
el-lenguaje-de-google● Charla en Betabeers Madrid 2012
APIS
#bbGRX
DEMO
¡Muchas gracias!
#bbGRX
“digitalizamos tus ilusiones”