Webservices com Zend Framework parte III

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

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

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
Ler Post Completo | Make a Comment ( None so far )

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

%d blogueiros gostam disto: