Webservices com Zend Framework parte II
Introdução
Neste segundo post vamos abordar a utilização de webservices usando o protocolo REST junto com Zend Framework. No primeiro artigo vimos como usar webservices usando o protocolo SOAP. Da mesma maneira como o SOAP, o Zend Framework disponibiliza as classes Zend_Rest_Server e Zend_Rest_Client para criar e consumir webservices REST. Veremos adiante.
REST
Representational State Transfer ou simplesmente REST é um estilo de webservice que permite a comunicação entre diferentes aplicações de forma simples. O webservice disponibiliza recursos para seus clientes, onde cada recurso esta disponibilizado em uma URL única. Toda comunicação é feita através do protocolo HTTP usando seus diferentes métodos (GET, POST, PUT, HEAD). O webservice disponibiliza o recurso (resultado da requisição) normalmente representado em forma de HTML ou XML. Essa arquitetura de comunicação é simples e de fácil implementação. Para ter uma idéia, você pode criar clientes REST sem a necessidade de uma lib específica. Combinação de requisições HTTP e a extensão SimpleXML pode ser usada para solucionar diversas situações. E no REST não existe o uso de WSDL como no SOAP.
Por ser mais simples e de fácil implementação em relação ao SOAP, REST é preferido na maioria das vezes pelos programadores. É utilizado em diversos lugares na Web, como Amazon, Microsoft, Twitter, Sun, MySQL entre outros.
Zend_Rest_Server
Zend_Rest_Server tem o objetivo de ser um recurso completo para criação de servers REST. Vamos disponibilizar uma calculadora simples, coma soma e subtração, através de um WebService REST. Segue abaixo a implementação usando Zend_Rest_Server com os métodos soma e subtrai.
Criando o REST Server:
<?php
/* incluir libs */
require_once("Zend/Rest/Server.php");
/* instanciar servidor REST */
$rest = new Zend_Rest_Server();
/* disponibilizar classe Calculadora */
$rest->setClass('Calculadora');
$rest->handle();
/*
* Classe Calculadora Simples
*/
class Calculadora {
/* Soma */
public function soma($a, $b) {
return $a + $b;
}
/* Subtrai */
public function subtrai($a, $b) {
return $a - $b;
}
}
Veja como é simples a implementação de um Webservice REST. Podemos requisitar o webservice diretamente através de uma requisição GET. É possível implementar nosso próprio cliente REST sem a utilização de nenhuma biblioteca específica.
Exemplos:
Somando 10 + 1::
http://127.0.0.1/rest/server.php?method=soma&a=10&b=1
Subtraindo 10 – 1:
http://127.0.0.1/rest/server.php?method=subtrai&a=10&b=1
Com a utilização do SimpleXML do PHP é possível tratar as respostas do Webservice server de maneira simples.
Zend_Rest_Client
Para facilitar a criação do nosso cliente que consumirá o webservice existe o componente Zend_Rest_Client. Utilizar o Zend_Rest_Client deixa nosso código mais limpo e de fácil manutenção. Abaixo é um exemplo de cliente REST usando o Zend Framework para consumir o Webservice que criamos anteriormente.
<?php
/* incluir libs */
require_once("Zend/Rest/Client.php");
/* instanciando o client rest */
$rest = new Zend_Rest_Client("http://127.0.0.1/rest/server.php");
/* chamando o metodo soma */
echo $rest->soma(10, 5)->get(); // imprime 15
/* chamando o metodo subtrai */
echo $rest->subtrai(10, 5)->get(); //imprime 5




