Diese Präsentation wurde erfolgreich gemeldet.
Die SlideShare-Präsentation wird heruntergeladen. ×

REST APIs com Django

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Wird geladen in …3
×

Hier ansehen

1 von 21 Anzeige
Anzeige

Weitere Verwandte Inhalte

Andere mochten auch (20)

Ähnlich wie REST APIs com Django (20)

Anzeige

Aktuellste (20)

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>

Hinweis der Redaktion

  • 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]

×