WebService com Zend Framework
Um web service é uma maneira de uma aplicação comunicar com um servidor Web. Tradicionalmente, quem interage com um servidor web é um ser humano, através de um browser. Se trocarmos o ser humano por uma aplicação, a interacção passa a ser por webservices.
Podem-se implementar webservices de várias maneiras. Duas delas ganharam notoriedade, por diferentes razões: SOAP e REST
SOAP(que é a que vou explicar aqui nesse artigo) é pegar numa mensagem xml, metê-la num envelope e enviá-la por HTTP (embora o SOAP permita diferentes protocolos de transporte, na prática é HTTP). A resposta vem igualmente num envelope, em xml.
REST é usar o HTTP como ele foi concebido, com GET, POST, PUT e DELETE (estes últimos dois quase não são utilizados mas estão na especificação desde o início). Ou seja, se sabem fazer submit de forms, sabem usar REST. A diferença é que o submit de um form devolve uma página em html, e um webservice REST devolve uma página em Xml
Acho que nem preciso falar qual é o mais seguro não é? Por isso é nele que vamos "MARTELAR".
Ta legal, e como implementar isso no ZEND FRAMEWORK?
Vou utilizar como exemplo aquele Quick Start que a zend disponibiliza em seu site então faça um download la mesmo blz?
Ele já vem com 3 controllers configurados ok? Index, Error e GuestbookController... vamos apenas utilizar o IndexController pois é ai que vamos escrever nosso webservice cliente(aquele que consome) e o server(aquele que libera).
Agora a classe "Calculadora que nosso webservice irá consumir
Veja que no indexcontroller criamos a action soapcliente e soapserver isso pq é um teste então o cliente e o servidor vão estar no mesmo lugar. O WSDL que vamos carregar é o do link do nosso servidor: http://start.local/index/soapserver?wsdl (onde start.local vc substitue pelo link do seu localhost e/ou site em que isso irá rodar).
Para testar vc acessa o seu WSDL http://start.local/index/soapserver?wsdl e se ele retornar um XML é com a descrição da sua classe Calculadora ele esta pronto para ser utilizado então para isso esse a action cliente e faça o teste: http://start.local/index/soapcliente
Para finalizar vou explicar o que é esse carinha ai WSDL que significa Web Services Description Language e é uma linguagem baseada em XML utilizada para descrever Web Services funcionando como um contrato do serviço. Trata-se de um documento escrito em XML que além de descrever o serviço, especifica como acessá-lo e quais as operações ou métodos disponíveis.
Imagine que são as regras para trabalhar com o webservice e como assim qualquer desenvolvedor de qualquer tecnologia consegue trabalhar com isso.
Vou disponibilizar um webservice SERVER na WEB para testes o WSDL será:
http://www.profpv.com/index/soapserver?wsdl
Assim todo mundo pode testar, inclusive o método que trabalha com STRING.
Valeu e até a próxima
Link original: http://profpv.blogspot.com.br/2012/03/webservice-com-zend-framework.html
Podem-se implementar webservices de várias maneiras. Duas delas ganharam notoriedade, por diferentes razões: SOAP e REST
SOAP(que é a que vou explicar aqui nesse artigo) é pegar numa mensagem xml, metê-la num envelope e enviá-la por HTTP (embora o SOAP permita diferentes protocolos de transporte, na prática é HTTP). A resposta vem igualmente num envelope, em xml.
REST é usar o HTTP como ele foi concebido, com GET, POST, PUT e DELETE (estes últimos dois quase não são utilizados mas estão na especificação desde o início). Ou seja, se sabem fazer submit de forms, sabem usar REST. A diferença é que o submit de um form devolve uma página em html, e um webservice REST devolve uma página em Xml
Acho que nem preciso falar qual é o mais seguro não é? Por isso é nele que vamos "MARTELAR".
Ta legal, e como implementar isso no ZEND FRAMEWORK?
Vou utilizar como exemplo aquele Quick Start que a zend disponibiliza em seu site então faça um download la mesmo blz?
Ele já vem com 3 controllers configurados ok? Index, Error e GuestbookController... vamos apenas utilizar o IndexController pois é ai que vamos escrever nosso webservice cliente(aquele que consome) e o server(aquele que libera).
<?php /* Carregando a classe que nosso server vai consumir */ require_once realpath(APPLICATION_PATH .'/../library/').'/Calculadora.php'; class IndexController extends Zend_Controller_Action { public function init() { /* Initialize action controller here */ } public function indexAction() { } public function soapserverAction() { if (isset($_GET['wsdl'])) { /* * Usar o Soap AutoDiscover para criacao do WSDL de forma dinamica */ $autodiscover = new Zend_Soap_AutoDiscover(); $autodiscover->setClass('Calculadora'); $autodiscover->handle(); } else { // Disponibilizar o webservice atraves do canal: $soap = new Zend_Soap_Server("http://start.local/index/soapserver?wsdl"); $soap->setClass('Calculadora'); $soap->handle(); } exit; } public function soapclienteAction() { /* canal de chamada para webservice */ $soap = new Zend_Soap_Client("http://start.local/index/soapserver?wsdl"); echo $soap->soma(11, 2) . PHP_EOL; // imprime 3 echo $soap->subtrai(11, 2) . PHP_EOL; //imprime 9 exit; } }
Agora a classe "Calculadora que nosso webservice irá consumir
<?php / * * Classe calculadora */ class Calculadora { /** * Realiza Soma * @param integer $a * @param integer $b * @return integer */ public function soma($a, $b) { return $a + $b; } /** * Realiza Subtracao * @param integer $a * @param integer $b * @return integer */ public function subtrai($a, $b) { return $a - $b; } /** * Concatena * @param string $a * @param string $b * @return string */ public function concatena($a, $b) { return $a ." concatenado com". $b; } }
Veja que no indexcontroller criamos a action soapcliente e soapserver isso pq é um teste então o cliente e o servidor vão estar no mesmo lugar. O WSDL que vamos carregar é o do link do nosso servidor: http://start.local/index/soapserver?wsdl (onde start.local vc substitue pelo link do seu localhost e/ou site em que isso irá rodar).
Para testar vc acessa o seu WSDL http://start.local/index/soapserver?wsdl e se ele retornar um XML é com a descrição da sua classe Calculadora ele esta pronto para ser utilizado então para isso esse a action cliente e faça o teste: http://start.local/index/soapcliente
Para finalizar vou explicar o que é esse carinha ai WSDL que significa Web Services Description Language e é uma linguagem baseada em XML utilizada para descrever Web Services funcionando como um contrato do serviço. Trata-se de um documento escrito em XML que além de descrever o serviço, especifica como acessá-lo e quais as operações ou métodos disponíveis.
Imagine que são as regras para trabalhar com o webservice e como assim qualquer desenvolvedor de qualquer tecnologia consegue trabalhar com isso.
Vou disponibilizar um webservice SERVER na WEB para testes o WSDL será:
http://www.profpv.com/index/soapserver?wsdl
Assim todo mundo pode testar, inclusive o método que trabalha com STRING.
Valeu e até a próxima
Link original: http://profpv.blogspot.com.br/2012/03/webservice-com-zend-framework.html
http://bodakyellowlyrics.com