Webservices com Zend Framework parte II

Posted on janeiro 7, 2012. Filed under: PHP, Zend Framework | Tags:, |

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

Make a Comment

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

Liked it here?
Why not try sites on the blogroll...

%d blogueiros gostam disto: