apis rest: django y go

26
5º Betabeers Granada + info: betabeers.com / @betabeersGRX / @jmrobles #bbGRX

Upload: jm-robles

Post on 22-Jun-2015

252 views

Category:

Technology


3 download

DESCRIPTION

Intro y charla sobre APIs REST en Django y Go del 5º Betabeers Granada del 28 de Abril

TRANSCRIPT

Page 1: APIs REST: Django y Go

5º Betabeers Granada

+ info: betabeers.com / @betabeersGRX / @jmrobles

#bbGRX

Page 2: APIs REST: Django y Go

#bbGRX

Betabeers entre birraspatrocinado por

Page 3: APIs REST: Django y Go

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!

Page 4: APIs REST: Django y Go

Mesa redonda

#bbGRX

APIS: La mejor merienda para tu App

Page 5: APIs REST: Django y Go

APIS

#bbGRX

ConceptosAPI

RESTfulAuth basic

OAuth2Backbone AJAX

Throttling

Status codes XMLJSON

Resources

cURL

URL

HTTP

GET/POST/PUT/DELETED

Page 6: APIs REST: Django y Go

APIS

#bbGRX

Ejemplo

curl -X GET http://api.ejemplo.com/v1/products

Page 7: APIs REST: Django y Go

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’}]

Page 8: APIs REST: Django y Go

APIS

#bbGRX

Ejemplocurl -X GET http://api.ejemplo.com/v1/products/1

Page 9: APIs REST: Django y Go

APIS

#bbGRX

Ejemplocurl -X GET http://api.ejemplo.com/v1/products/1

Resultado

200 OK{‘id’: ‘1’, ‘name’:’iphone’}

Page 10: APIs REST: Django y Go

APIS

#bbGRX

Ejemplocurl -X POST -d {‘id’: ‘5’, ‘name’: ‘iPad’} http://api.ejemplo.com/v1/products/

Page 11: APIs REST: Django y Go

APIS

#bbGRX

Ejemplocurl -X POST -d {‘id’: ‘5’, ‘name’: ‘iPad’} http://api.ejemplo.com/v1/products/

Resultado

201 Created

Page 12: APIs REST: Django y Go

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

Page 13: APIs REST: Django y Go

APIS

#bbGRX

¿Por qué APIs REST?

● Interoperabilidad● Flexibilidad● Sencillez● Router-friendly

Page 14: APIs REST: Django y Go

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

Page 15: APIs REST: Django y Go

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

Page 16: APIs REST: Django y Go

APIS

#bbGRX

APIs con Vitaminas

● Cache => Memcached, redis, …● Lotes por request● Throttling (a nadie le gusta un DDOS)● Compress

Page 17: APIs REST: Django y Go

APIS

#bbGRX

Parse

David Lázaro@_dlazaro

Page 18: APIs REST: Django y Go

APIS

#bbGRX

REST Framework y Go JSON REST

JM Robles@jmrobles

Page 19: APIs REST: Django y Go

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 ...

Page 20: APIs REST: Django y Go

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')

Page 21: APIs REST: Django y Go

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)

Page 22: APIs REST: Django y Go

APIS

#bbGRX

DEMO

Page 23: APIs REST: Django y Go

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

Page 24: APIs REST: Django y Go

APIS

#bbGRX

Go (aka Golang)● http://slideshare.com/jmroblesh/go-

el-lenguaje-de-google● Charla en Betabeers Madrid 2012

Page 25: APIs REST: Django y Go

APIS

#bbGRX

DEMO

Page 26: APIs REST: Django y Go

¡Muchas gracias!

#bbGRX

“digitalizamos tus ilusiones”