1º Encontro de CakePHP em São Paulo




Criando e consumindo web services
(REST) com o framework CakePHP
Agenda

    Apresentação
    Motivação
    O que é um web service?
    Criando uma aplicação RESTful no CakePHP
    Consumindo o web service da aplicação criada
    Criando um cliente para o twitter
    Referências
    Agradecimentos
    Perguntas?
Agenda

    Apresentação
    Motivação
    O que é um web service?
    Criando uma aplicação RESTful no CakePHP
    Consumindo o web service da aplicação criada
    Criando um cliente para o twitter
    Referências
    Agradecimentos
    Perguntas?
Apresentação


Carlos Pires (Cadu) é bacharel em ciência da computação pela
Universidade FUMEC.
Desenvolve e é apaixonado pela web e por software livre desde 1999.
Natural de Belo Horizonte, trabalhou com Java(JEE) por mais de 6 anos em
diversas empresas da capital mineira. Ultimamente tem se dedicado ao
CakePHP e à jQuery.

Quando não está andando de bike, está estudando línguas (inglês e espanhol),
curtindo um samba de raíz ou tomando uma cervejinha com os amigos.
Agenda

    Apresentação
    Motivação
    O que é um web service?
    Criando uma aplicação RESTful no CakePHP
    Consumindo o web service da aplicação criada
    Criando um cliente para o twitter
    Referências
    Agradecimentos
    Perguntas?
Motivação



    Divulgar o framework CakePHP
    Retribuir à comunidade de software livre
    Combater o código 'espaguete'
    Mostrar que programar pode ser divertido!
Agenda

    Apresentação
    Motivação
    O que é um web service?
    Criando uma aplicação RESTful no CakePHP
    Consumindo o web service da aplicação criada
    Criando um cliente para o twitter
    Referências
    Agradecimentos
    Perguntas?
O que é um web service?




“Web service é uma solução utilizada na integração
 de sistemas e na comunicação entre aplicações
 diferentes.”
                         Fonte: http://pt.wikipedia.org/wiki/Web_service
Agenda

    Apresentação
    Motivação
    O que é um web service?
    Criando uma aplicação RESTful no CakePHP
    Consumindo o web service da aplicação criada
    Criando um cliente para o twitter
    Referências
    Agradecimentos
    Perguntas?
Criando uma aplicação RESTful no CakePHP




    Ativar as rotas para o acesso REST (con g/routes.php)
    Utilizar o component RequestHandler e alterar os
     métodos na classe de controle
    Criar as páginas da visão (views/controller/xml)
Criando uma aplicação RESTful no CakePHP


  	Router::mapResources('posts');	

  	Router::parseExtensions('xml');	



                                      con g/routes.php
Criando uma aplicação RESTful no CakePHP


<?php	
class PostsController extends AppController {	

       	var $name = 'Posts';	
       	var $helpers = array('Html', 'Form');	
       	var $components = array('RequestHandler');	

        	function index() {	
        	       	$this->Post->recursive = 0;	
        	       	if ($this->RequestHandler->isXml()) {	
        	       	        	$this->set('posts', $this->Post-
>find('all',array('fields'=>array('titulo'))));	
        	       	} else {	
        	       	        	$this->set('posts', $this->paginate());	
        	       	}	
        	}	
?>	


                                                                controllers/posts_controller.php
Criando uma aplicação RESTful no CakePHP


<posts>	
        	<?php echo $xml->serialize($posts); ?>	
</posts>	


                                                   views/posts/xml/index.ctp
Agenda

    Apresentação
    Motivação
    O que é um web service?
    Criando uma aplicação RESTful no CakePHP
    Consumindo o web service da aplicação criada
    Criando um cliente para o twitter
    Referências
    Agradecimentos
    Perguntas?
Consumindo o web service da aplicação criada




    Criar os métodos na classe de controle para
     acessar o web service
    Criar as páginas da visão para exibir o conteúdo
Consumindo o web service da aplicação criada

<?php	
App::import('Core',array('HttpSocket','Xml'));	

class WsreadersController extends AppController {	

       	var $uses = null;	

       	function index() {	
       	       	$this->autoRender=false;	
       	       	$httpSocket = new HttpSocket();	
       	       	$url = 'http://127.0.0.1/2kmwebservice/posts/index.xml';	
       	       	$retorno = $httpSocket->get($url);	
       	       	$xml = new Xml($retorno);	
       	       	pr($xml->toArray());	
       	}	
}	
?>	

                                                         controllers/wsreaders_controller.php
Agenda

    Apresentação
    Motivação
    O que é um web service?
    Criando uma aplicação RESTful no CakePHP
    Consumindo o web service da aplicação criada
    Criando um cliente para o twitter
    Referências
    Agradecimentos
    Perguntas?
Criando um cliente para o Twitter




    Criar os métodos na classe de controle para
     acessar o web service do Twitter
    Criar as páginas da visão para interagir com o
     serviço
Criando um cliente para o Twitter

<?php	
App::import('Core',array('HttpSocket','Xml'));	

class WsreadersController extends AppController {	

       	var $uses = null;	

       	function twitter(){	
       	       	$this->autoRender=false;	
       	       	$HttpSocket = new HttpSocket();	
       	       	$header = array('auth' => array(	
       	       	        	'method' => 'Basic',	
       	       	        	'user' => 'usuario',	
       	       	        	'pass' => 'senha'	
       	       	));	
       	       	$url = "http://twitter.com/account/verify_credentials.xml";	
       	       	$resposta = $HttpSocket->get($url, null, $header); 	
       	       	$xml = new XML($resposta);	
       	       	$array = $xml->toArray();	
       	       	pr($array);	
       	}	

...	


                                                         controllers/wsreaders_controller.php
Criando um cliente para o Twitter

...	

function updatetwitter(){	
    if (!empty($this->data)) {	
        	$this->autoRender=false;	
        	$HttpSocket = new HttpSocket();	
        	$header = array('auth' => array(	
        	       	'method' => 'Basic',	
        	       	'user' => 'cursocake',	
        	       	'pass' => 'cursocake'	
        	));	
        	$url = "http://twitter.com/statuses/update.xml";	
        	       	        		
        	$status = array('status' => $this->data['Wsreader']['status']);	
        	$resposta =$HttpSocket->post($url, $status, $header);     	        	   	       		
        	$xml = new XML($resposta);	
        	$array = $xml->toArray();	
        	pr($array);	
        	}	
    }	
}	

?>	

                                                          controllers/wsreaders_controller.php
Criando um cliente para o Twitter

<div class="posts form">	
<?php echo $form->create('Wsreader',array('action'=>'updatetwitter'));?>	
        	<fieldset>	
        	        	<legend><?php __('Atualizar status no twitter');?></legend>	
        	<?php	
        	       	echo $form->input('status');	
        	?>	
        	</fieldset>	
<?php echo $form->end('Submit');?>	
</div>	


                                                            views/wsreaders/updatetwitter.ctp
Agenda

    Apresentação
    Motivação
    O que é um web service ?
    Criando uma aplicação RESTful no CakePHP
    Consumindo o web service da aplicação criada
    Criando um cliente para o twitter
    Referências
    Agradecimentos
    Perguntas?
Referências


    Site o cial no Brasil do CakePHP
         -  http://www.cakephp.com.br
    Manual do CakePHP em português
         -  http://book.cakephp.org/pt
    Artigos e tutoriais
         -  http://bakery.cakephp.org/
    Grupo do CakePHP em português
         -  http://groups.google.com/group/cake-php-pt/
Agenda

    Apresentação
    Motivação
    O que é um web service ?
    Criando uma aplicação RESTful no CakePHP
    Consumindo o web service da aplicação criada
    Criando um cliente para o twitter
    Referências
    Agradecimentos
    Perguntas?
Agradecimentos


    Aos organizadores do 1º Encontro de CakePHP
     de São Paulo
    Ao CakePHP por facilitar a minha vida ;)
    À comunidade pela presença
Agenda

    Apresentação
    Motivação
    O que é um web service?
    Criando uma aplicação RESTful no CakePHP
    Consumindo o web service da aplicação criada
    Criando um cliente para o twitter
    Referências
    Agradecimentos
    Perguntas?
Perguntas?




Carlos Pires
       -  E-mail: carlos.pires@2km.com.br
       -  Twitter: @cadu




        www.2km.com.br - Twitter: @2km

Criando e consumindo Web Services (REST) com o CakePHP

  • 1.
    1º Encontro deCakePHP em São Paulo Criando e consumindo web services (REST) com o framework CakePHP
  • 2.
    Agenda   Apresentação   Motivação   O que é um web service?   Criando uma aplicação RESTful no CakePHP   Consumindo o web service da aplicação criada   Criando um cliente para o twitter   Referências   Agradecimentos   Perguntas?
  • 3.
    Agenda   Apresentação   Motivação   O que é um web service?   Criando uma aplicação RESTful no CakePHP   Consumindo o web service da aplicação criada   Criando um cliente para o twitter   Referências   Agradecimentos   Perguntas?
  • 4.
    Apresentação Carlos Pires (Cadu)é bacharel em ciência da computação pela Universidade FUMEC. Desenvolve e é apaixonado pela web e por software livre desde 1999. Natural de Belo Horizonte, trabalhou com Java(JEE) por mais de 6 anos em diversas empresas da capital mineira. Ultimamente tem se dedicado ao CakePHP e à jQuery. Quando não está andando de bike, está estudando línguas (inglês e espanhol), curtindo um samba de raíz ou tomando uma cervejinha com os amigos.
  • 5.
    Agenda   Apresentação   Motivação   O que é um web service?   Criando uma aplicação RESTful no CakePHP   Consumindo o web service da aplicação criada   Criando um cliente para o twitter   Referências   Agradecimentos   Perguntas?
  • 6.
    Motivação   Divulgar o framework CakePHP   Retribuir à comunidade de software livre   Combater o código 'espaguete'   Mostrar que programar pode ser divertido!
  • 7.
    Agenda   Apresentação   Motivação   O que é um web service?   Criando uma aplicação RESTful no CakePHP   Consumindo o web service da aplicação criada   Criando um cliente para o twitter   Referências   Agradecimentos   Perguntas?
  • 8.
    O que éum web service? “Web service é uma solução utilizada na integração de sistemas e na comunicação entre aplicações diferentes.” Fonte: http://pt.wikipedia.org/wiki/Web_service
  • 9.
    Agenda   Apresentação   Motivação   O que é um web service?   Criando uma aplicação RESTful no CakePHP   Consumindo o web service da aplicação criada   Criando um cliente para o twitter   Referências   Agradecimentos   Perguntas?
  • 10.
    Criando uma aplicaçãoRESTful no CakePHP   Ativar as rotas para o acesso REST (con g/routes.php)   Utilizar o component RequestHandler e alterar os métodos na classe de controle   Criar as páginas da visão (views/controller/xml)
  • 11.
    Criando uma aplicaçãoRESTful no CakePHP Router::mapResources('posts'); Router::parseExtensions('xml'); con g/routes.php
  • 12.
    Criando uma aplicaçãoRESTful no CakePHP <?php class PostsController extends AppController { var $name = 'Posts'; var $helpers = array('Html', 'Form'); var $components = array('RequestHandler'); function index() { $this->Post->recursive = 0; if ($this->RequestHandler->isXml()) { $this->set('posts', $this->Post- >find('all',array('fields'=>array('titulo')))); } else { $this->set('posts', $this->paginate()); } } ?> controllers/posts_controller.php
  • 13.
    Criando uma aplicaçãoRESTful no CakePHP <posts> <?php echo $xml->serialize($posts); ?> </posts> views/posts/xml/index.ctp
  • 14.
    Agenda   Apresentação   Motivação   O que é um web service?   Criando uma aplicação RESTful no CakePHP   Consumindo o web service da aplicação criada   Criando um cliente para o twitter   Referências   Agradecimentos   Perguntas?
  • 15.
    Consumindo o webservice da aplicação criada   Criar os métodos na classe de controle para acessar o web service   Criar as páginas da visão para exibir o conteúdo
  • 16.
    Consumindo o webservice da aplicação criada <?php App::import('Core',array('HttpSocket','Xml')); class WsreadersController extends AppController { var $uses = null; function index() { $this->autoRender=false; $httpSocket = new HttpSocket(); $url = 'http://127.0.0.1/2kmwebservice/posts/index.xml'; $retorno = $httpSocket->get($url); $xml = new Xml($retorno); pr($xml->toArray()); } } ?> controllers/wsreaders_controller.php
  • 17.
    Agenda   Apresentação   Motivação   O que é um web service?   Criando uma aplicação RESTful no CakePHP   Consumindo o web service da aplicação criada   Criando um cliente para o twitter   Referências   Agradecimentos   Perguntas?
  • 18.
    Criando um clientepara o Twitter   Criar os métodos na classe de controle para acessar o web service do Twitter   Criar as páginas da visão para interagir com o serviço
  • 19.
    Criando um clientepara o Twitter <?php App::import('Core',array('HttpSocket','Xml')); class WsreadersController extends AppController { var $uses = null; function twitter(){ $this->autoRender=false; $HttpSocket = new HttpSocket(); $header = array('auth' => array( 'method' => 'Basic', 'user' => 'usuario', 'pass' => 'senha' )); $url = "http://twitter.com/account/verify_credentials.xml"; $resposta = $HttpSocket->get($url, null, $header); $xml = new XML($resposta); $array = $xml->toArray(); pr($array); } ... controllers/wsreaders_controller.php
  • 20.
    Criando um clientepara o Twitter ... function updatetwitter(){ if (!empty($this->data)) { $this->autoRender=false; $HttpSocket = new HttpSocket(); $header = array('auth' => array( 'method' => 'Basic', 'user' => 'cursocake', 'pass' => 'cursocake' )); $url = "http://twitter.com/statuses/update.xml"; $status = array('status' => $this->data['Wsreader']['status']); $resposta =$HttpSocket->post($url, $status, $header); $xml = new XML($resposta); $array = $xml->toArray(); pr($array); } } } ?> controllers/wsreaders_controller.php
  • 21.
    Criando um clientepara o Twitter <div class="posts form"> <?php echo $form->create('Wsreader',array('action'=>'updatetwitter'));?> <fieldset> <legend><?php __('Atualizar status no twitter');?></legend> <?php echo $form->input('status'); ?> </fieldset> <?php echo $form->end('Submit');?> </div> views/wsreaders/updatetwitter.ctp
  • 22.
    Agenda   Apresentação   Motivação   O que é um web service ?   Criando uma aplicação RESTful no CakePHP   Consumindo o web service da aplicação criada   Criando um cliente para o twitter   Referências   Agradecimentos   Perguntas?
  • 23.
    Referências   Site o cial no Brasil do CakePHP -  http://www.cakephp.com.br   Manual do CakePHP em português -  http://book.cakephp.org/pt   Artigos e tutoriais -  http://bakery.cakephp.org/   Grupo do CakePHP em português -  http://groups.google.com/group/cake-php-pt/
  • 24.
    Agenda   Apresentação   Motivação   O que é um web service ?   Criando uma aplicação RESTful no CakePHP   Consumindo o web service da aplicação criada   Criando um cliente para o twitter   Referências   Agradecimentos   Perguntas?
  • 25.
    Agradecimentos   Aos organizadores do 1º Encontro de CakePHP de São Paulo   Ao CakePHP por facilitar a minha vida ;)   À comunidade pela presença
  • 26.
    Agenda   Apresentação   Motivação   O que é um web service?   Criando uma aplicação RESTful no CakePHP   Consumindo o web service da aplicação criada   Criando um cliente para o twitter   Referências   Agradecimentos   Perguntas?
  • 27.
    Perguntas? Carlos Pires -  E-mail: carlos.pires@2km.com.br -  Twitter: @cadu www.2km.com.br - Twitter: @2km