http://flickr.com/photos/estherase/128983854/




PHP RESTful Web   Felipe Ribeiro - feliperibeiro.com
                  fe...
Quem é esse cabra da peste?
• Felipe Ribeiro

  • Graduando em Ciência da Computação na UFCG;

  • Natural de Campina Gran...
Web Services
Web Services
• Web service é uma solução utilizada na integração de sistemas
  e na comunicação entre aplicações diferente...
SOAP é o padrão no mercado...




                        http://www.flickr.com/photos/katcameron/140299496
Mas SOAP é complicado!




                    http://www.flickr.com/photos/jerry7171/192391979/
O que dizem sobre o SOAP...
• Primeiro, você usa UDDI para descobrir aonde estão os
  serviços que você está interessado e...
Mas o mundo é cruel...
• Registros UDDI são tão lendários que o próximo “Jurassic
  Park” vai ter um;

• O único padrão da...
REST - Representational State Transfer
(Transferência de Estado Representacional)




                               http:...
• REST não é um envelope XML semelhante ao SOAP


• REST não é um framework/toolkit


• REST não é padronizado pela W3C


...
• Conjunto de princípios para uma arquitetura baseada em
  como a Web funciona


• ROA - Resource Oriented Architecture (A...
Princípios REST




                  http://www.flickr.com/photos/mscolly/145052885
1. Sintaxe universal para identificação de
             recursos - URI




                                http://www.flickr...
E o que são esses recursos?




                     http://www.flickr.com/photos/heather/147388906
• Tudo que é importante ao ponto de ser exposto pelo sistema
  na web


• São os substantivos


• Todo recurso tem uma URI...
Possíveis recursos
• Fotos no Flickr

• Bookmarks no Delicious

• Atualizações no Twitter

• ...




                     ...
2 - Um conjunto bem definido de operações




                            http://www.flickr.com/photos/99129398@N00/255783151
• No mundo real existe “polimorfismo” dos verbos, assim
  simplificamos o nosso vocabulário com verbos genéricos que
  serve...
• Podemos fazer uma analogia desses verbos da seguinte
  maneira



             HTTP           SQL         CRUD
         ...
3 - Um conjunto de diversos formatos
             possíveis




                           http://www.flickr.com/photos/991...
• Recursos são conceitos, representações são como lidamos
  com eles


• Nem só de XML vive o REST


• Qualquer formato po...
4 - Protocolo Stateless




                          http://www.savagechickens.com/tag/amnesia
• Toda requisição é independente.


• Toda requisição precisa conter toda informação necessária
  para que o processamento...
Classificação




               http://www.flickr.com/photos/ogil/2540634421/
REST-RPC (Low REST)
• Utiliza principalmente o método GET para toda a API e a ação
  a ser tomada é descrita na própria UR...
RESTful (High REST)
• Implementação de acordo com a tese de Roy Fielding

• Utiliza os quatro verbos (GET, POST, PUT, DELE...
• O uso correto ou não dos verbos determina se uma aplicação
  é considerada RESTful ou não.
                        Não R...
Finalmente PHP...




                    http://www.flickr.com/photos/tobiasschlitt/2644905363/
Implementando um serviço REST
• É muito simples!

• PHP permite que você saiba qual o método HTTP foi utilizado
  na requi...
Pode ser basicão...
     <?php

     switch($_SERVER['REQUEST_METHOD']) {
        case 'GET':
           //Retorna os dado...
Ou pode ser mais elaborado...
• Vamos ver como seria um sistema simples de gerenciamento
  de bookmarks

• Usaremos o padr...
Consumindo um serviço REST
• Você vai precisar da libcurl, ou do pacote HTTP_REQUEST do
  PEAR




                       ...
Perguntas?




             http://www.flickr.com/photos/oberazzi/318947873
Referências
• Leonard Richardson & Sam Ruby. Restful Web Services,
  O’Reilly;

• http://rest.blueoxen.net/cgi-bin/wiki.pl...
Obrigado!


      Felipe Ribeiro
 felipernb@gmail.com
http://feliperibeiro.com

                           http://www.flick...
Próximos SlideShares
Carregando em…5
×

PHP RESTful Web Services

12.418 visualizações

Publicada em

Palestra dada por mim (Felipe Ribeiro) no CONAPHP 2008 - Congresso Nacional de PHP que ocorreu em São Paulo nos dias 18 e 19 de Outubro dentro do CONISLI 2008

Publicada em: Tecnologia
2 comentários
19 gostaram
Estatísticas
Notas
  • Very interesting ppt. The research indicated PPT only contains 30% of information; therefore the 70% valuable information comes from the presenter himself/herself. soEZLecturing.com provides you a chance to record your voice with your PowerPoint presentation and upload to the website. It can share with more readers and also promote your presentation more effectively on soEZLecturing.com.
    www.soezlecturing.com
       Responder 
    Tem certeza que deseja  Sim  Não
    Insira sua mensagem aqui
  • excelentes slides Felipe!
       Responder 
    Tem certeza que deseja  Sim  Não
    Insira sua mensagem aqui
Sem downloads
Visualizações
Visualizações totais
12.418
No SlideShare
0
A partir de incorporações
0
Número de incorporações
1.716
Ações
Compartilhamentos
0
Downloads
329
Comentários
2
Gostaram
19
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

PHP RESTful Web Services

  1. 1. http://flickr.com/photos/estherase/128983854/ PHP RESTful Web Felipe Ribeiro - feliperibeiro.com felipernb@gmail.com Services CONAPHP / CONISLI 2008
  2. 2. Quem é esse cabra da peste? • Felipe Ribeiro • Graduando em Ciência da Computação na UFCG; • Natural de Campina Grande, PB; • Trabalha remotamente como desenvolvedor sênior da startup Shoprizer.com, com base em Miami, FL;
  3. 3. Web Services
  4. 4. Web Services • Web service é uma solução utilizada na integração de sistemas e na comunicação entre aplicações diferentes. • Padrões Abertos • Independência • Sistema Operacional • Linguagem de Programação
  5. 5. SOAP é o padrão no mercado... http://www.flickr.com/photos/katcameron/140299496
  6. 6. Mas SOAP é complicado! http://www.flickr.com/photos/jerry7171/192391979/
  7. 7. O que dizem sobre o SOAP... • Primeiro, você usa UDDI para descobrir aonde estão os serviços que você está interessado em consumir. • Depois você vai consumir os arquivos WSDL que descrevem os serviços com uma ferramenta geradora de clientes de web services. • Aí você vai poder finalmente enviar as requisições dos seus serviços via HTTP, SMTP, FTP… http://www.flickr.com/photos/jerry7171/192391979/
  8. 8. Mas o mundo é cruel... • Registros UDDI são tão lendários que o próximo “Jurassic Park” vai ter um; • O único padrão das mensagens é como o formato delas é definido (WSDL), quase nenhuma industria de peso tem formatos de mensagens padronizados; • Ninguém usa web services em SOAP sem HTTP; • Nem sempre é fácil fazer tecnologia X conversar com tecnologia Y via SOAP. • O modo de invocação dos web services mata qualquer possibilidade de se desenvolver clientes Ajax para eles; http://www.flickr.com/photos/jerry7171/192391979/
  9. 9. REST - Representational State Transfer (Transferência de Estado Representacional) http://www.flickr.com/photos/practicalowl/392894653/
  10. 10. • REST não é um envelope XML semelhante ao SOAP • REST não é um framework/toolkit • REST não é padronizado pela W3C http://www.flickr.com/photos/practicalowl/392894653/
  11. 11. • Conjunto de princípios para uma arquitetura baseada em como a Web funciona • ROA - Resource Oriented Architecture (Arquitetura orientada a recursos) • Utiliza padrões já existentes (HTTP, XML,...) • Tese de doutorado de Roy Fielding (2000) • Interface uniforme para acesso aos recursos http://www.flickr.com/photos/practicalowl/392894653/
  12. 12. Princípios REST http://www.flickr.com/photos/mscolly/145052885
  13. 13. 1. Sintaxe universal para identificação de recursos - URI http://www.flickr.com/photos/heather/147388906
  14. 14. E o que são esses recursos? http://www.flickr.com/photos/heather/147388906
  15. 15. • Tudo que é importante ao ponto de ser exposto pelo sistema na web • São os substantivos • Todo recurso tem uma URI. http://www.flickr.com/photos/heather/147388906
  16. 16. Possíveis recursos • Fotos no Flickr • Bookmarks no Delicious • Atualizações no Twitter • ... http://www.flickr.com/photos/heather/147388906
  17. 17. 2 - Um conjunto bem definido de operações http://www.flickr.com/photos/99129398@N00/255783151
  18. 18. • No mundo real existe “polimorfismo” dos verbos, assim simplificamos o nosso vocabulário com verbos genéricos que servem para vários tipos objetos, como CRIAR, PEGAR, ALTERAR, APAGAR (jogar fora) • HTTP já oferece as quatro operações que precisamos, GET, POST, PUT, DELETE. • Esses são os verbos • Assim temos uma interface padrão e genérica para todos os recursos. http://www.flickr.com/photos/99129398@N00/255783151
  19. 19. • Podemos fazer uma analogia desses verbos da seguinte maneira HTTP SQL CRUD POST INSERT CREATE GET SELECT RETRIEVE PUT UPDATE UPDATE DELETE DELETE DELETE http://www.flickr.com/photos/99129398@N00/255783151
  20. 20. 3 - Um conjunto de diversos formatos possíveis http://www.flickr.com/photos/99129398@N00/255783151
  21. 21. • Recursos são conceitos, representações são como lidamos com eles • Nem só de XML vive o REST • Qualquer formato pode ser utilizado para representar um recurso: HTML, Texto puro, PDF, imagens (JPEG, PNG,...) e etc... http://www.flickr.com/photos/99129398@N00/255783151
  22. 22. 4 - Protocolo Stateless http://www.savagechickens.com/tag/amnesia
  23. 23. • Toda requisição é independente. • Toda requisição precisa conter toda informação necessária para que o processamento seja feito. • Ajuda na escalabilidade e balanceamento de carga. http://www.savagechickens.com/tag/amnesia
  24. 24. Classificação http://www.flickr.com/photos/ogil/2540634421/
  25. 25. REST-RPC (Low REST) • Utiliza principalmente o método GET para toda a API e a ação a ser tomada é descrita na própria URI. • Mais comum por ser mais fácil de implementar http://www.flickr.com/photos/ogil/2540634421/
  26. 26. RESTful (High REST) • Implementação de acordo com a tese de Roy Fielding • Utiliza os quatro verbos (GET, POST, PUT, DELETE) http://www.flickr.com/photos/ogil/2540634421/
  27. 27. • O uso correto ou não dos verbos determina se uma aplicação é considerada RESTful ou não. Não RESTful Verbo URI (substantivo) Ação POST /bookmarks/create Criar GET /bookmarks/show/1 Visualizar POST /bookmarks/update/1 Alterar GET/POST /bookmarks/delete/1 Apagar RESTful Verbo URI (substantivo) Ação POST /bookmarks Criar GET /bookmarks/1 Visualizar PUT /bookmarks/1 Alterar DELETE /bookmarks/1 Apagar http://www.flickr.com/photos/ogil/2540634421/
  28. 28. Finalmente PHP... http://www.flickr.com/photos/tobiasschlitt/2644905363/
  29. 29. Implementando um serviço REST • É muito simples! • PHP permite que você saiba qual o método HTTP foi utilizado na requisição, acessando a variável: $_SERVER[‘REQUEST_METHOD’] • Caso a saída seja em XML, você pode usar o SimpleXML para facilitar sua vida. http://www.flickr.com/photos/tobiasschlitt/2644905363/
  30. 30. Pode ser basicão... <?php switch($_SERVER['REQUEST_METHOD']) { case 'GET': //Retorna os dados... break; case 'POST': //Cria um novo registro... break; case 'PUT': //Altera o registro... break; case 'DELETE': //Apaga o registro... break; } ?> http://www.flickr.com/photos/tobiasschlitt/2644905363/
  31. 31. Ou pode ser mais elaborado... • Vamos ver como seria um sistema simples de gerenciamento de bookmarks • Usaremos o padrão Front Controller e processaremos as requisições de acordo com o recurso que é desejado (nesse caso o recurso é o bookmark) e o método HTTP utilizado. • Talk is cheap... Show me the code! http://www.flickr.com/photos/tobiasschlitt/2644905363/
  32. 32. Consumindo um serviço REST • Você vai precisar da libcurl, ou do pacote HTTP_REQUEST do PEAR http://www.flickr.com/photos/tobiasschlitt/2644905363/
  33. 33. Perguntas? http://www.flickr.com/photos/oberazzi/318947873
  34. 34. Referências • Leonard Richardson & Sam Ruby. Restful Web Services, O’Reilly; • http://rest.blueoxen.net/cgi-bin/wiki.pl?FrontPage • http://en.wikipedia.org/wiki/REST • http://www.lornajane.net/posts/2008/PHP-Rest-Server-part-1- of-3 • Maurício Linhares , Diga não aos web services • http://www.slideshare.net/allisson/restful-web-services http://www.flickr.com/photos/nullalux/2261949240
  35. 35. Obrigado! Felipe Ribeiro felipernb@gmail.com http://feliperibeiro.com http://www.flickr.com/photos/jaredchapman/482538719

×