PHP RESTful Web Services

40 %
60 %
Information about PHP RESTful Web Services
Technology

Published on October 22, 2008

Author: felipernb

Source: slideshare.net

Description

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

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

Add a comment

Related presentations

Related pages

How to Build a RESTful API Web Service with PHP - Across ...

Learn how to create a bare-bones API Web Service using PHP without using any third-party libraries.
Read more

RESTful PHP Web Services | PACKT Books

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

Representational State Transfer – Wikipedia

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

RESTful Web Service tutorial in PHP & Java. REST in Java, PHP. REST is an acronym standing for Representational State Transfer. Representational State ...
Read more

Create a RESTful Services API in PHP. - 9lessons

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

REST Web Services - Einführung u. Vergleich mit SOAP

Abstract. Web Services werden meist mit SOAP oder XML-RPC in Verbindung gebracht. Mit REpresentational State Transfer oder kurz REST, einem Architekturstil ...
Read more

web services - Call a REST API in PHP - Stack Overflow

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

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

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 | Dr Dobb's

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