http://flickr.com/photos/estherase/128983854/ PHP RESTful Web Felipe Ribeiro - feliperibeiro.com felipernb@gmail.com Services CONAPHP / CONISLI 2008
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;
Web Services
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
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 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/
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/
REST - Representational State Transfer (Transferência de Estado Representacional) http://www.flickr.com/photos/practicalowl/392894653/
• 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/
• 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/
Princípios REST http://www.flickr.com/photos/mscolly/145052885
1. Sintaxe universal para identificação de recursos - URI http://www.flickr.com/photos/heather/147388906
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. http://www.flickr.com/photos/heather/147388906
Possíveis recursos • Fotos no Flickr • Bookmarks no Delicious • Atualizações no Twitter • ... http://www.flickr.com/photos/heather/147388906
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 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
• 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
3 - Um conjunto de diversos formatos possíveis http://www.flickr.com/photos/99129398@N00/255783151
• 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
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 seja feito. • Ajuda na escalabilidade e balanceamento de carga. http://www.savagechickens.com/tag/amnesia
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 URI. • Mais comum por ser mais fácil de implementar http://www.flickr.com/photos/ogil/2540634421/
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/
• 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/
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 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/
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/
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/
Consumindo um serviço REST • Você vai precisar da libcurl, ou do pacote HTTP_REQUEST do PEAR http://www.flickr.com/photos/tobiasschlitt/2644905363/
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?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
Obrigado! Felipe Ribeiro felipernb@gmail.com http://feliperibeiro.com http://www.flickr.com/photos/jaredchapman/482538719
Presentación que realice en el Evento Nacional de Gobierno Abierto, realizado los ...
In this presentation we will describe our experience developing with a highly dyna...
Presentation to the LITA Forum 7th November 2014 Albuquerque, NM
Un recorrido por los cambios que nos generará el wearabletech en el futuro
Um paralelo entre as novidades & mercado em Wearable Computing e Tecnologias Assis...
Microsoft finally joins the smartwatch and fitness tracker game by introducing the...
Learn how to create a bare-bones API Web Service using PHP without using any third-party libraries.
Read more
This book is about implementing RESTful web services in PHP, and so the book is packed with example code and careful explanations. Authors. Samisa Abeysinghe.
Read more
Java API for RESTful Web Services (JAX-RS) Webservice – „klassische“ SOAP-basierte Webservices;
Read more
RESTful Web Service tutorial in PHP & Java. REST in Java, PHP. REST is an acronym standing for Representational State Transfer. Representational State ...
Read more
How to do Create a RESTful Services API in PHP.. Tutorial focused on Programming, Jquery, Ajax, PHP, Demos, Web Design, Javascript, Software and ...
Read more
Abstract. Web Services werden meist mit SOAP oder XML-RPC in Verbindung gebracht. Mit REpresentational State Transfer oder kurz REST, einem Architekturstil ...
Read more
Browse other questions tagged php web-services rest or ask your own question. asked. 3 years ago. viewed. ... Restful API service. 0 php rest api call.
Read more
Building A RESTful PHP Server: Understanding the Request. Once upon a time, what seems like a lifetime ago, I was away for a couple of weeks, and I wrote a ...
Read more
A Guide to Designing and Building RESTful Web Services with WCF 3.5. Aaron Skonnard, Pluralsight. ... RESTful Web Services (O’Reilly) RESTful .NET ...
Read more
RESTful Web Services: A Tutorial. By M. Vaqqas, September 23, 2014. As REST has become the default for most Web and mobile apps, it's imperative to have ...
Read more
Add a comment