Webservices com Zend Framework parte III
Introdução
Na primeira e segunda parte abordamos a criação e utilização de webservices SOAP e REST. Nesta terceira e final parte vamos conhecer alguns componentes do Zend Framework que funcionam como APIs para diversos serviços em torno da Internet. A comunicação entre esses serviços são realizadas através de webservices utilizando os protocolos SOAP e REST. O Zend Framework mais uma vez facilitou nossa vida encapsulando diversas funcionalidades dentro dessas classes de serviços para minimizar nosso esforço.
A lista de serviços disponíveis pelo Zend Framework pode ser obtida no link abaixo:
http://framework.zend.com/manual/en/zend.service.html
Gostaria de destacar alguns: Amazom, Yahoo, Twitter, Windows Azure, Flickr, SlideShare, Delicious.
Criei dois exemplos para utilização desses serviços à partir do Zend Framework, usando o Twitter e o Delicious.
Zend_Service_Twitter
Criamos abaixo uma aplicação que conecta no twitter com sua conta e realiza algumas operações. A primeira operação irá listar os 20 posts mais recentes dos seus amigos e a segunda operação irá listar os 20 posts mais recentes postados por você.
Para saber mais operações que você pode realizar junto com o Zend Framework, acessar o link: (existem várias)
http://framework.zend.com/manual/en/zend.service.twitter.html
Para poder criar uma aplicação externa que acessa o twitter você também precisa criar um app no site do twitter para desenvolvedor. Mais especificamente no link:
https://dev.twitter.com/apps/new
Após criar sua app no twitter, será necessário obter tokens e chaves para inserir na lib do Zend Framework. Substitua no código abaixo os tokens e chaves correspondentes conforme mencionado.
<?php /* incluir bibliotecas */ require_once("Zend/Service/Twitter.php"); /* credenciais */ $access = new Zend_Oauth_Token_Access(); $access->setToken('<Accees Token>')->setTokenSecret('<Access token secret>'); $params = array( 'accessToken' => $access, 'consumerKey' => '<Consumer key>', 'consumerSecret' => '<Consumer secret>' ); $twitter = new Zend_Service_Twitter($params); /* retorna os 20 status mais recentes postados por seus amigos */ $response = $twitter->status->friendsTimeline(); foreach($response as $info) { echo "<h4>{$info->user->name}</h4>"; echo "<p>{$info->text}</p>"; } /* retorna os 20 status mais recentes postados por voce */ $response = $twitter->status->userTimeLine(); foreach($response as $info) { echo "<h4>{$info->user->name}</h4>"; echo "<p>{$info->text}</p>"; }
Zend_Service_Delicious
Para quem não conhece, o Delicious é um site que proporciona você encontrar sites interessantes (bookmarks de outros usuários) e também compartilhar seus próprios sites favoritos. Além de poder integrar o Delicious em seu navegador, você também pode criar aplicações via Webservice para manipular as opções que o Delicious oferece.
O Zend Framework disponibiliza uma API de comunicação com o Delicious simples e de fácil manuseio. Antes de mais nada faça seu cadastro no site (veja link acima). Após realizar o cadastro você já pode criar suas próprias aplicações para o Delicious. Abaixo temos uma aplicação que obtem todos bookmarks do seu usuário, filtrando aqueles que possuem a tag “php”, e exibe a saída na tela, informando o título e o link do site que consta no seu favorito.
Para obter mais informação sobre as operações que pode realizar com essa API acesse a documentação do Zend Framework:
http://framework.zend.com/manual/en/zend.service.delicious.html
Segue Exemplo:
<?php /* incluir bibliotecas */ require_once("Zend/Service/Delicious.php"); /* credenciais */ $delicious = new Zend_Service_Delicious('usuario', 'senha'); /* todos posta */ $posts = $delicious->getAllPosts(); /* filtrar somente aqueles posts que possuem tag php */ foreach ($posts->withTags(array('php')) as $post) { echo "<h3>{$post->getTitle()}</h3>"; echo "<a href=\"{$post->getUrl()}\">{$post->getUrl()}</a>"; }
Saída na tela da execução do script anterior, informando o título e o link para cada registro inserido no seu favoritos do Delicious com a tag php:
Conclusão
O Zend Framework fornece vários outras APIs de comunicação com diversos sites. O objetivo desse artigo foi deixar você a par da existencia dessas APIs e mostrar algumas implementações simples que podem ser realizadas.
Ler Post Completo | Make a Comment ( None so far )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 5Ler Post Completo | Make a Comment ( None so far )