PHP RESTful Web Services

12.352 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.352
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

×