rest apis com django

Download REST APIs com Django

If you can't read please download the document

Upload: mailson-menezes

Post on 16-Apr-2017

4.188 views

Category:

Technology


1 download

TRANSCRIPT

REST APIs com Django

Mailson [email protected] Encontro do PUG-PE

Quem sou eu

Aluno do sexto perodo de Cincia da Computao da UFPE com interesse em desenvolvimento web.

Web Service

Voc precisa acessar informaes de um servidor de terceiros. Ao invs de acoesso direto ao banco de dados, ele pode liberar uma API para tornar seu trabalho mais simples e o dele mais seguro.

Web Service

Isso no novo. H muito tempo j se faz algo do tipo.O problema que para manter a fluidez da web, isso devia ser feito de forma mais simples.

Web Service

No tem problemas com firewall

Nvel baixo de complexidade

SOAP

Bastante usado na Web 1.0

Aproveita protocolos j existentes (HTTP, SMTP)

Mensagens no formato XML

Desenvolvido pela MicrosoftFormato XML mais simples do que mensagens binrias usadas no CORBA, por exemplo.

SOAP

Envia um XML dizendo o que quer, o servidor executa a ao solicitada e retorna outro XML com a resposta.

REST

Para alguns, SOAP passou a ser complicado demais

REST no um protocolo. No existe um padro definido

A requisio pode estar somente na URL

Pra que serve?

Desenvolvimento de APIs

Distribuio de contedo

Voc vai fazer uma API com REST

Quem usa?

Twitter

Flickr

LinkedIn

Yahoo!

Amazon

Youtube

REST vs. SOAP

REST no um protocolo

Conjunto de princpios

REST vs. SOAP

Requisitando os Trending Topics do Twitter no caso de uma API SOAP.A resposta seria obrigatoriamente outro XML.

REST

Requisitando os Trending Topics do jeito REST

http://api.twitter.com/1/trends.json

A resposta pode ser em vrios formatos.

import urllib2r=urllib2.urlopen('http://api.twitter.com/1/trends.json').read()import jsontt = json.loads(r)for t in tt['trends']: print %s -> %s % (t['name'], t['url'])

REST

Facilidade de usarPraticamente no necessrio o uso de bibliotecas

Aproveita os mtodos do HTTPGET, POST, PUT, DELETE

REST

Exemplos com Django REST Framework

GET /rest/polls/

views.pyurls.pyurls.pyclass PollsResource(View): # GET /rest/polls/ def get(self, request): # Pega todas as enquetes polls = Poll.objects.all()

# Retorna uma lista de enquetes (dicionario contendo id, pergunta e url da API para ver mais dados sobre a enquete) return [{'id': p.id, 'question': (p.question), 'pub_date': str(p.pub_date), 'url': reverse('poll-resource', args=(p.id,))} for p in polls]

GET /rest/polls/ID

urls.pyviews.py

PUT /rest/choices/ID

urls.pyviews.py

POST /rest/polls/

views.py

DELETE /rest/polls/ID

views.py

Veja mais

Django REST Frameworkhttp://django-rest-framework.org/

Introduo a Django em 4 parteshttps://docs.djangoproject.com/en/1.3/intro/tutorial01/

http://docs.djangobrasil.org/intro/tutorial01.html (em portugus)

Tutorial de RESThttp://rest.elkstein.org/

Entenda melhor sobre RESThttp://jacobian.org/writing/rest-worst-practices/

http://blog.steveklabnik.com/2011/07/03/nobody-understands-rest-or-http.html