Successfully reported this slideshow.
Your SlideShare is downloading. ×

REST APIs com Django

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Loading in …3
×

Check these out next

1 of 21 Ad
Advertisement

More Related Content

Viewers also liked (20)

Recently uploaded (20)

Advertisement

REST APIs com Django

  1. 1. REST APIs com Django Mailson Lira mailson.net [email_address] XIV Encontro do PUG-PE
  2. 2. Quem sou eu <ul>Aluno do sexto período de Ciência da Computação da UFPE com interesse em desenvolvimento web. </ul>
  3. 3. Web Service
  4. 4. Web Service
  5. 5. Web Service <ul><li>Não tem problemas com firewall
  6. 6. Nível baixo de complexidade </li></ul>
  7. 7. SOAP <ul><li>Bastante usado na “Web 1.0”
  8. 8. Aproveita protocolos já existentes (HTTP, SMTP)
  9. 9. Mensagens no formato XML </li></ul>
  10. 10. SOAP
  11. 11. REST <ul><li>Para alguns, SOAP passou a ser complicado demais
  12. 12. REST não é um protocolo. Não existe um padrão definido
  13. 13. A requisição pode estar somente na URL </li></ul>
  14. 14. Pra que serve? <ul><li>Desenvolvimento de APIs
  15. 15. Distribuição de conteúdo </li></ul>
  16. 16. Quem usa? <ul><li>Twitter
  17. 17. Flickr
  18. 18. LinkedIn
  19. 19. Yahoo!
  20. 20. Amazon
  21. 21. Youtube </li></ul>
  22. 22. REST vs. SOAP <ul><li>REST não é um protocolo
  23. 23. Conjunto de princípios </li></ul>
  24. 24. REST vs. SOAP Requisitando os Trending Topics do Twitter no caso de uma API SOAP. A resposta seria obrigatoriamente outro XML.
  25. 25. REST <ul>Requisitando os Trending Topics do jeito REST </ul>http://api.twitter.com/1/trends.json
  26. 26. REST <ul><li>Facilidade de usar </li><ul><li>Praticamente não é necessário o uso de bibliotecas </li></ul><li>Aproveita os métodos do HTTP </li><ul><li>GET, POST, PUT, DELETE </li></ul></ul>
  27. 27. REST <ul><li>Exemplos com Django REST Framework </li></ul>
  28. 28. GET /rest/polls/ views.py urls.py urls.py
  29. 29. GET /rest/polls/ID urls.py views.py
  30. 30. PUT /rest/choices/ID urls.py views.py
  31. 31. POST /rest/polls/ views.py
  32. 32. DELETE /rest/polls/ID views.py
  33. 33. Veja mais <ul><li>Django REST Framework </li><ul><li>http://django-rest-framework.org/ </li></ul><li>Introdução a Django em 4 partes </li><ul><li>https://docs.djangoproject.com/en/1.3/intro/tutorial01/
  34. 34. http://docs.djangobrasil.org/intro/tutorial01.html (em português) </li></ul><li>Tutorial de REST </li><ul><li>http://rest.elkstein.org/ </li></ul><li>Entenda melhor sobre REST </li><ul><li>http://jacobian.org/writing/rest-worst-practices/
  35. 35. http://blog.steveklabnik.com/2011/07/03/nobody-understands-rest-or-http.html </li></ul></ul>

Editor's Notes

  • Você precisa acessar informações de um servidor de terceiros. Ao invés de acoesso direto ao banco de dados, ele pode liberar uma API para tornar seu trabalho mais simples e o dele mais seguro.
  • Isso não é 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.
  • Desenvolvido pela Microsoft Formato XML é mais simples do que mensagens binárias usadas no CORBA, por exemplo.
  • Envia um XML dizendo o que quer, o servidor executa a ação solicitada e retorna outro XML com a resposta.
  • Você vai fazer uma API com REST
  • A resposta pode ser em vários formatos. import urllib2 r=urllib2.urlopen(&apos;http://api.twitter.com/1/trends.json&apos;).read() import json tt = json.loads(r) for t in tt[&apos;trends&apos;]: print “%s -&gt; %s” % (t[&apos;name&apos;], t[&apos;url&apos;])
  • class 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 [{&apos;id&apos;: p.id, &apos;question&apos;: (p.question), &apos;pub_date&apos;: str(p.pub_date), &apos;url&apos;: reverse(&apos;poll-resource&apos;, args=(p.id,))} for p in polls]

×