SlideShare uma empresa Scribd logo
1 de 18
Baixar para ler offline
REST (REpresentational               com Python
                         State Transfer)
                                Fábio Cerqueira
Palestrante


    Graduando em Ciência da Computação na UECE

        
            Desenvolvedor Python na Mares Telecom

                           
                               Coordenador do PugCE
Palestra


    A WEB


    O protocolo HTTP


    Web Service e REST


    Clientes acessando recursos com REST


    Arquitetura orientada a recursos


    Construindo serviços REST


    Trabalhando com Python a linguagem dos campeões
Conhecendo vocês...

         
             Quem ainda não ouviu falar de web service?

                      
                          Quem já consumiu um web service?

                 
                     Quem já implementou um web service?


    Quem já implementou um web service usando REST?
WWW


    Hipermídia


    URI


    HTTP
HTTP

              
                  Baseado e mensagens com envelopes


                                
                                    Não mantêm estado



    Métodos GET, POST, PUT, DELETE, HEADER, OPTIONS
GET /blog/ HTTP/1.1
Host: pug-ce.python.org.br
User-Agent: Mozilla/5.0 (X11; U; Linux i686; pt-BR; rv:1.9.2.9) ...
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: pt-br,pt;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Cookie: __utma=139099058.1176665982.1258504221.1259506802.1260294479.3
Cache-Control: max-age=0




                                 HTTP/1.1 200 OK
   HTTP Header                   Connection: Keep-Alive
                                 Keep-Alive: timeout=15
                                 Transfer-Encoding: chunked
                                 Date: Sat, 10 Sep 2010 01:52:43 GMT
                                 Server: Cherokee/1.0.5 (Ubuntu)
                                 Content-Encoding: gzip
                                 Vary: Accept-Encoding
                                 Content-Type: text/html; charset=utf-8
REST (Representational   State Transfer)



    Roy Fielding


    Uso de hipermídia


    Uso de identificador universal pra Recursos


    Conjuntos de operações bem definidas


    Protocolo cliente/servidor sem estado
Clientes REST


    Simples de implementar
    
      Definir qual ação e quais dados usar
    
      Formartar uma requisição HTTP
    
      Analisar a resposta


    Vários módulos para usar o HTTP


    Serviços conhecidos possuem módulos Python prontos
Arquitetura Orientada a Recursos

                                
                                    Recursos

                        
                                Seus Nomes

             
                 Suas representações

                            
                                Navegação
Arquitetura Orientada a Recursos


    Endereçamento


    Falta de estado


    Encadeamento


    Interface Uniforme
Construindo um serviço (Encurtador          de URL)

                         
                                 Conjunto de Dados

                             
                                 Definir recursos

                                 
                                     Nomear Recursos

    
        Construir Representações do cliente


    Construir Representações do Servidor

                                      
                                          Implementar
Python


 Django
http://www.djangoproject.com/


 Django Piston
http://bitbucket.org/jespern/django-piston


    Código do exemplo do encurtador de url
Dúvidas?
Referências


    Architectural Styles and the Design of Network-based Software
            Architectures(Chapter 5) - Roy Thomas Fielding - 2000


     
         RESTful Web Services - Leonard Richardson, Sam Ruby - 2007
eu.links = {'blog':       'fabiocerqueira.wordpress.com',
           'bookmark': 'delicious.com/fabiocerqueira',
           'repository':    'github.com/fabiocerqueira',
           'microblog':    'twitter.com/fabiocerqueira'}
eu.mail = 'cerqueirasfabio@gmail.com'
obrigado!

Mais conteúdo relacionado

Destaque

Seminário - Guido van Rossum: Breve história da linguagem Python
Seminário - Guido van Rossum: Breve história da linguagem PythonSeminário - Guido van Rossum: Breve história da linguagem Python
Seminário - Guido van Rossum: Breve história da linguagem PythonGiancarlo Silva
 
Apresentação Python Poli
Apresentação Python PoliApresentação Python Poli
Apresentação Python PoliRodrigo Lira
 
Objetos Pythonicos - compacto
Objetos Pythonicos - compactoObjetos Pythonicos - compacto
Objetos Pythonicos - compactoLuciano Ramalho
 
Introdução a Python - Python Poli
Introdução a Python  - Python PoliIntrodução a Python  - Python Poli
Introdução a Python - Python PoliRodrigo Lira
 
Desvendando o python
Desvendando o pythonDesvendando o python
Desvendando o pythonRodrigo Lira
 
python: Listas, deques, Dicionarios e outros monstros mitologicos
python: Listas, deques, Dicionarios e outros monstros mitologicospython: Listas, deques, Dicionarios e outros monstros mitologicos
python: Listas, deques, Dicionarios e outros monstros mitologicosAdriano Petrich
 
Django: um framework web para perfeccionistas com prazo
Django: um framework web para perfeccionistas com prazoDjango: um framework web para perfeccionistas com prazo
Django: um framework web para perfeccionistas com prazoBernardo Fontes
 
Testes pythonicos com pytest
Testes pythonicos com pytestTestes pythonicos com pytest
Testes pythonicos com pytestviniciusban
 
Aula 5 linguagens regularese automatosfinitosnãodeterministico
Aula 5   linguagens regularese automatosfinitosnãodeterministicoAula 5   linguagens regularese automatosfinitosnãodeterministico
Aula 5 linguagens regularese automatosfinitosnãodeterministicowab030
 
Apresentando a Linguagem de Programação Python
Apresentando a Linguagem de Programação PythonApresentando a Linguagem de Programação Python
Apresentando a Linguagem de Programação PythonPriscila Mayumi
 
Arduino: Brincando de eletrônica com Python e Hardware Livre
Arduino: Brincando de eletrônica com Python e Hardware LivreArduino: Brincando de eletrônica com Python e Hardware Livre
Arduino: Brincando de eletrônica com Python e Hardware LivreÁlvaro Justen
 
Apresentação python fábio jr alves
Apresentação python   fábio jr alvesApresentação python   fábio jr alves
Apresentação python fábio jr alvesGrupython Ufla
 
14 programando em python - interfaces graficas com tk
 14   programando em python - interfaces graficas com tk 14   programando em python - interfaces graficas com tk
14 programando em python - interfaces graficas com tkVictor Marcelino
 
Desenvolvendo aplicações web com python e web2py
Desenvolvendo aplicações web com python e web2pyDesenvolvendo aplicações web com python e web2py
Desenvolvendo aplicações web com python e web2pyGilson Filho
 
Arduino: Robótica e Automação com Software e Hardware Livres
Arduino: Robótica e Automação com Software e Hardware LivresArduino: Robótica e Automação com Software e Hardware Livres
Arduino: Robótica e Automação com Software e Hardware LivresÁlvaro Justen
 
Lista de Exercícios - Linguagem Formais e Autômatos
Lista de Exercícios - Linguagem Formais e AutômatosLista de Exercícios - Linguagem Formais e Autômatos
Lista de Exercícios - Linguagem Formais e AutômatosTárcio Sales
 
Python no Celular
Python no CelularPython no Celular
Python no Celulariuridiniz
 

Destaque (20)

Seminário - Guido van Rossum: Breve história da linguagem Python
Seminário - Guido van Rossum: Breve história da linguagem PythonSeminário - Guido van Rossum: Breve história da linguagem Python
Seminário - Guido van Rossum: Breve história da linguagem Python
 
Aprendendo python
Aprendendo pythonAprendendo python
Aprendendo python
 
Apresentação Python Poli
Apresentação Python PoliApresentação Python Poli
Apresentação Python Poli
 
Objetos Pythonicos - compacto
Objetos Pythonicos - compactoObjetos Pythonicos - compacto
Objetos Pythonicos - compacto
 
Python Poli 2010
Python Poli 2010Python Poli 2010
Python Poli 2010
 
Introdução a Python - Python Poli
Introdução a Python  - Python PoliIntrodução a Python  - Python Poli
Introdução a Python - Python Poli
 
Desvendando o python
Desvendando o pythonDesvendando o python
Desvendando o python
 
API - Como fazer?
API - Como fazer?API - Como fazer?
API - Como fazer?
 
python: Listas, deques, Dicionarios e outros monstros mitologicos
python: Listas, deques, Dicionarios e outros monstros mitologicospython: Listas, deques, Dicionarios e outros monstros mitologicos
python: Listas, deques, Dicionarios e outros monstros mitologicos
 
Django: um framework web para perfeccionistas com prazo
Django: um framework web para perfeccionistas com prazoDjango: um framework web para perfeccionistas com prazo
Django: um framework web para perfeccionistas com prazo
 
Testes pythonicos com pytest
Testes pythonicos com pytestTestes pythonicos com pytest
Testes pythonicos com pytest
 
Aula 5 linguagens regularese automatosfinitosnãodeterministico
Aula 5   linguagens regularese automatosfinitosnãodeterministicoAula 5   linguagens regularese automatosfinitosnãodeterministico
Aula 5 linguagens regularese automatosfinitosnãodeterministico
 
Apresentando a Linguagem de Programação Python
Apresentando a Linguagem de Programação PythonApresentando a Linguagem de Programação Python
Apresentando a Linguagem de Programação Python
 
Arduino: Brincando de eletrônica com Python e Hardware Livre
Arduino: Brincando de eletrônica com Python e Hardware LivreArduino: Brincando de eletrônica com Python e Hardware Livre
Arduino: Brincando de eletrônica com Python e Hardware Livre
 
Apresentação python fábio jr alves
Apresentação python   fábio jr alvesApresentação python   fábio jr alves
Apresentação python fábio jr alves
 
14 programando em python - interfaces graficas com tk
 14   programando em python - interfaces graficas com tk 14   programando em python - interfaces graficas com tk
14 programando em python - interfaces graficas com tk
 
Desenvolvendo aplicações web com python e web2py
Desenvolvendo aplicações web com python e web2pyDesenvolvendo aplicações web com python e web2py
Desenvolvendo aplicações web com python e web2py
 
Arduino: Robótica e Automação com Software e Hardware Livres
Arduino: Robótica e Automação com Software e Hardware LivresArduino: Robótica e Automação com Software e Hardware Livres
Arduino: Robótica e Automação com Software e Hardware Livres
 
Lista de Exercícios - Linguagem Formais e Autômatos
Lista de Exercícios - Linguagem Formais e AutômatosLista de Exercícios - Linguagem Formais e Autômatos
Lista de Exercícios - Linguagem Formais e Autômatos
 
Python no Celular
Python no CelularPython no Celular
Python no Celular
 

Semelhante a REST com Python - Construindo serviços RESTful

Arquitetura Web Desacoplada - FCI/Mackenzie
Arquitetura Web Desacoplada - FCI/MackenzieArquitetura Web Desacoplada - FCI/Mackenzie
Arquitetura Web Desacoplada - FCI/MackenzieVivaldo Jose Breternitz
 
Conhecendo o Novo REST Framework
Conhecendo o Novo REST FrameworkConhecendo o Novo REST Framework
Conhecendo o Novo REST FrameworkMario Guedes
 
De Web Services RESTful a Aplicações Mashup
De Web Services RESTful a Aplicações MashupDe Web Services RESTful a Aplicações Mashup
De Web Services RESTful a Aplicações MashupWagner Roberto dos Santos
 
Webservices em PHP e a liberdade da Web
Webservices em PHP e a liberdade da WebWebservices em PHP e a liberdade da Web
Webservices em PHP e a liberdade da WebAlexandre Andrade
 
Escalabilidade e performance da infraestrutura Plone/Zope com CacheFU e Varnish
Escalabilidade e performance da infraestrutura Plone/Zope com CacheFU e VarnishEscalabilidade e performance da infraestrutura Plone/Zope com CacheFU e Varnish
Escalabilidade e performance da infraestrutura Plone/Zope com CacheFU e VarnishLucas Brasilino
 
Desenvolvimento de uma API RESTful com Java EE
Desenvolvimento de uma API RESTful com Java EEDesenvolvimento de uma API RESTful com Java EE
Desenvolvimento de uma API RESTful com Java EELuan Felipe Knebel
 
FISL12. Web Services e Computação em Nuvem com PHP
FISL12. Web Services e Computação em Nuvem com PHPFISL12. Web Services e Computação em Nuvem com PHP
FISL12. Web Services e Computação em Nuvem com PHPFlávio Lisboa
 
Integração de Serviços Cloud com REST/JSON
Integração de Serviços Cloud com REST/JSON Integração de Serviços Cloud com REST/JSON
Integração de Serviços Cloud com REST/JSON Fernando Rizzato
 
Criando e consumindo webservice REST com PHP e JSON
Criando e consumindo webservice REST com PHP e JSONCriando e consumindo webservice REST com PHP e JSON
Criando e consumindo webservice REST com PHP e JSONAmbiente Livre
 
Criando e consumindo webservice REST com PHP e JSON
Criando e consumindo webservice REST com PHP e JSONCriando e consumindo webservice REST com PHP e JSON
Criando e consumindo webservice REST com PHP e JSONMarcio Junior Vieira
 
Ebook Apache Server: Guia Introdutório
Ebook Apache Server: Guia IntrodutórioEbook Apache Server: Guia Introdutório
Ebook Apache Server: Guia IntrodutórioFernando Palma
 
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...Tchelinux
 
Integrando sua App ao Mundo via REST/JSON
Integrando sua App ao Mundo via REST/JSONIntegrando sua App ao Mundo via REST/JSON
Integrando sua App ao Mundo via REST/JSONMario Guedes
 
Desenvolvimento web com python e web2py
Desenvolvimento web com python e web2pyDesenvolvimento web com python e web2py
Desenvolvimento web com python e web2pyRelsi Maron
 
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NETArquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NETRenato Groff
 
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NETArquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NETRenato Groff
 
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NETArquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NETRenato Groff
 

Semelhante a REST com Python - Construindo serviços RESTful (20)

Arquitetura Web Desacoplada - FCI/Mackenzie
Arquitetura Web Desacoplada - FCI/MackenzieArquitetura Web Desacoplada - FCI/Mackenzie
Arquitetura Web Desacoplada - FCI/Mackenzie
 
Web apis
Web apisWeb apis
Web apis
 
Conhecendo o Novo REST Framework
Conhecendo o Novo REST FrameworkConhecendo o Novo REST Framework
Conhecendo o Novo REST Framework
 
De Web Services RESTful a Aplicações Mashup
De Web Services RESTful a Aplicações MashupDe Web Services RESTful a Aplicações Mashup
De Web Services RESTful a Aplicações Mashup
 
Webservices em PHP e a liberdade da Web
Webservices em PHP e a liberdade da WebWebservices em PHP e a liberdade da Web
Webservices em PHP e a liberdade da Web
 
Escalabilidade e performance da infraestrutura Plone/Zope com CacheFU e Varnish
Escalabilidade e performance da infraestrutura Plone/Zope com CacheFU e VarnishEscalabilidade e performance da infraestrutura Plone/Zope com CacheFU e Varnish
Escalabilidade e performance da infraestrutura Plone/Zope com CacheFU e Varnish
 
Desenvolvimento de uma API RESTful com Java EE
Desenvolvimento de uma API RESTful com Java EEDesenvolvimento de uma API RESTful com Java EE
Desenvolvimento de uma API RESTful com Java EE
 
FISL12. Web Services e Computação em Nuvem com PHP
FISL12. Web Services e Computação em Nuvem com PHPFISL12. Web Services e Computação em Nuvem com PHP
FISL12. Web Services e Computação em Nuvem com PHP
 
Integração de Serviços Cloud com REST/JSON
Integração de Serviços Cloud com REST/JSON Integração de Serviços Cloud com REST/JSON
Integração de Serviços Cloud com REST/JSON
 
Criando e consumindo webservice REST com PHP e JSON
Criando e consumindo webservice REST com PHP e JSONCriando e consumindo webservice REST com PHP e JSON
Criando e consumindo webservice REST com PHP e JSON
 
Criando e consumindo webservice REST com PHP e JSON
Criando e consumindo webservice REST com PHP e JSONCriando e consumindo webservice REST com PHP e JSON
Criando e consumindo webservice REST com PHP e JSON
 
Um pouco sobre APIs
Um pouco sobre APIsUm pouco sobre APIs
Um pouco sobre APIs
 
Ebook Apache Server: Guia Introdutório
Ebook Apache Server: Guia IntrodutórioEbook Apache Server: Guia Introdutório
Ebook Apache Server: Guia Introdutório
 
REST and JEE
REST and JEEREST and JEE
REST and JEE
 
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
 
Integrando sua App ao Mundo via REST/JSON
Integrando sua App ao Mundo via REST/JSONIntegrando sua App ao Mundo via REST/JSON
Integrando sua App ao Mundo via REST/JSON
 
Desenvolvimento web com python e web2py
Desenvolvimento web com python e web2pyDesenvolvimento web com python e web2py
Desenvolvimento web com python e web2py
 
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NETArquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET
 
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NETArquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET
 
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NETArquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET
 

REST com Python - Construindo serviços RESTful

  • 1. REST (REpresentational com Python State Transfer) Fábio Cerqueira
  • 2. Palestrante  Graduando em Ciência da Computação na UECE  Desenvolvedor Python na Mares Telecom  Coordenador do PugCE
  • 3. Palestra  A WEB  O protocolo HTTP  Web Service e REST  Clientes acessando recursos com REST  Arquitetura orientada a recursos  Construindo serviços REST  Trabalhando com Python a linguagem dos campeões
  • 4. Conhecendo vocês...  Quem ainda não ouviu falar de web service?  Quem já consumiu um web service?  Quem já implementou um web service?  Quem já implementou um web service usando REST?
  • 5. WWW  Hipermídia  URI  HTTP
  • 6. HTTP  Baseado e mensagens com envelopes  Não mantêm estado  Métodos GET, POST, PUT, DELETE, HEADER, OPTIONS
  • 7. GET /blog/ HTTP/1.1 Host: pug-ce.python.org.br User-Agent: Mozilla/5.0 (X11; U; Linux i686; pt-BR; rv:1.9.2.9) ... Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: pt-br,pt;q=0.8,en-us;q=0.5,en;q=0.3 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 115 Connection: keep-alive Cookie: __utma=139099058.1176665982.1258504221.1259506802.1260294479.3 Cache-Control: max-age=0 HTTP/1.1 200 OK HTTP Header Connection: Keep-Alive Keep-Alive: timeout=15 Transfer-Encoding: chunked Date: Sat, 10 Sep 2010 01:52:43 GMT Server: Cherokee/1.0.5 (Ubuntu) Content-Encoding: gzip Vary: Accept-Encoding Content-Type: text/html; charset=utf-8
  • 8. REST (Representational State Transfer)  Roy Fielding  Uso de hipermídia  Uso de identificador universal pra Recursos  Conjuntos de operações bem definidas  Protocolo cliente/servidor sem estado
  • 9. Clientes REST  Simples de implementar  Definir qual ação e quais dados usar  Formartar uma requisição HTTP  Analisar a resposta  Vários módulos para usar o HTTP  Serviços conhecidos possuem módulos Python prontos
  • 10.
  • 11. Arquitetura Orientada a Recursos  Recursos  Seus Nomes  Suas representações  Navegação
  • 12. Arquitetura Orientada a Recursos  Endereçamento  Falta de estado  Encadeamento  Interface Uniforme
  • 13. Construindo um serviço (Encurtador de URL)  Conjunto de Dados  Definir recursos  Nomear Recursos  Construir Representações do cliente  Construir Representações do Servidor  Implementar
  • 14. Python  Django http://www.djangoproject.com/  Django Piston http://bitbucket.org/jespern/django-piston  Código do exemplo do encurtador de url
  • 16. Referências  Architectural Styles and the Design of Network-based Software Architectures(Chapter 5) - Roy Thomas Fielding - 2000  RESTful Web Services - Leonard Richardson, Sam Ruby - 2007
  • 17. eu.links = {'blog': 'fabiocerqueira.wordpress.com', 'bookmark': 'delicious.com/fabiocerqueira', 'repository': 'github.com/fabiocerqueira', 'microblog': 'twitter.com/fabiocerqueira'} eu.mail = 'cerqueirasfabio@gmail.com'