criando aplicações restful com zend framework 2

49
Criando aplicações RESTFul com Zend Framework 2

Upload: elton-minetto

Post on 18-Dec-2014

2.208 views

Category:

Technology


2 download

DESCRIPTION

Nessa palestra apresento algumas características do ZF2 como o ServiceManager e o EventManager e como usá-las para criar um módulo útil para criação de aplicações RESTFul

TRANSCRIPT

Page 1: Criando aplicações RestFul com Zend Framework 2

Criando aplicações RESTFul com Zend

Framework 2

Page 2: Criando aplicações RestFul com Zend Framework 2

Quem?

Page 3: Criando aplicações RestFul com Zend Framework 2

Elton MinettoGraduado/pós-graduado em Ciência da Computação

Desenvolvedor desde 1997Professor desde 2004

Autor de três livros sobre PHP e um sobre grid computing

Podcaster no Biz and Code

CTO da Coderockr e do Code SquadMembro da diretoria da ABRAPHP

Page 4: Criando aplicações RestFul com Zend Framework 2

Princípios REST

Page 5: Criando aplicações RestFul com Zend Framework 2

Dê a todas as coisas um identificador

Page 6: Criando aplicações RestFul com Zend Framework 2

http://zf2.dev/api/v1/album.album.jsonhttp://zf2.dev/api/v1/album.album.json/1

http://example.com/customers/1234http://www.infoq.com/br/articles/rest-introduction

Page 7: Criando aplicações RestFul com Zend Framework 2

Vincule as coisas

Page 8: Criando aplicações RestFul com Zend Framework 2

<order self="http://x.com/orders/1234"> <amount>23</amount> <product ref="http://x.com/products/4554"></product> <customer ref="http://x.com/customers/1234"></customer> </order>

Page 9: Criando aplicações RestFul com Zend Framework 2

Utilize os métodos padrão

Page 10: Criando aplicações RestFul com Zend Framework 2

GET, PUT, POST, DELETE,HEAD, OPTIONS

Page 11: Criando aplicações RestFul com Zend Framework 2

Recursos com múltiplas representações

Page 12: Criando aplicações RestFul com Zend Framework 2

http://zf2.dev/api/v1/album.album.jsonhttp://zf2.dev/api/v1/album.album.xml

ou usar o header Accept

Page 13: Criando aplicações RestFul com Zend Framework 2

Comunique sem estado

Page 14: Criando aplicações RestFul com Zend Framework 2

“[...]um servidor não deveria guardar o estado da comunicação de qualquer um dos clientes que se

comunique com ele além de uma única requisição. A razão mais óbvia para isso é escalabilidade - o número de

clientes que podem interagir com o servidor seria consideravelmente impactado se fosse preciso manter o

estado do cliente”

Page 15: Criando aplicações RestFul com Zend Framework 2

Zend Framework 2

Page 16: Criando aplicações RestFul com Zend Framework 2

Desenvolvido pela Zend junto com a comunidade PHP

Mais de 2 anos de desenvolvimentoMais de 200 profissionais envolvidos

Apoio Google, Microsoft, entre outras

Page 17: Criando aplicações RestFul com Zend Framework 2

Mão na massa!

Page 18: Criando aplicações RestFul com Zend Framework 2

Composer

Page 19: Criando aplicações RestFul com Zend Framework 2

mkdir rest_zf2cd rest_zf2curl -sS https://getcomposer.org/installer | php

Page 20: Criando aplicações RestFul com Zend Framework 2

ZFTool

Page 21: Criando aplicações RestFul com Zend Framework 2

php composer.phar require zendframework/zftool:dev-master

Page 22: Criando aplicações RestFul com Zend Framework 2

Criando o projeto

Page 23: Criando aplicações RestFul com Zend Framework 2

php ./vendor/bin/zf.php create project ~/Documents/Projects/vagrant/rest_zf2/Todo

cd Todo

php composer.phar self-update

php composer.phar install

Page 24: Criando aplicações RestFul com Zend Framework 2

Apache VHost

Page 25: Criando aplicações RestFul com Zend Framework 2

<VirtualHost *:80> ServerName todo.dev DocumentRoot /vagrant/rest_zf2/Todo/public SetEnv APPLICATION_ENV "development" SetEnv PROJECT_ROOT "/vagrant/rest_zf2/Todo" <Directory /vagrant/rest_zf2/Todo/public> DirectoryIndex index.php AllowOverride All Order allow,deny Allow from all </Directory></VirtualHost>

Page 26: Criando aplicações RestFul com Zend Framework 2

Módulos

Page 27: Criando aplicações RestFul com Zend Framework 2

"[] um módulo é uma coleção de código e outros arquivos que resolve um problema específico de uma aplicação ou site."

Mattew O'Phinney. Zend Framework project leader

Page 28: Criando aplicações RestFul com Zend Framework 2

Módulo Application

Módulo Api

Módulo Admin

Page 29: Criando aplicações RestFul com Zend Framework 2

Criando o módulo Api

Page 30: Criando aplicações RestFul com Zend Framework 2

cd ../php ./vendor/bin/zf.php create module Api ~/Documents/Projects/vagrant/rest_zf2/Todo/

Page 31: Criando aplicações RestFul com Zend Framework 2

Banco de dados

Page 32: Criando aplicações RestFul com Zend Framework 2

global.phphttps://gist.github.com/eminetto/5709289

sqlite3 data/todo.dbcreate table item (id INTEGER PRIMARY KEY AUTOINCREMENT, description text, done int);

Page 33: Criando aplicações RestFul com Zend Framework 2

Entidades e TableGateway

Page 34: Criando aplicações RestFul com Zend Framework 2

src/Application/Model/Item.phphttps://gist.github.com/eminetto/5709294

src/Application/Model/ItemTable.phphttps://gist.github.com/eminetto/5709297

Application/Module.phphttps://gist.github.com/eminetto/5710850

Page 35: Criando aplicações RestFul com Zend Framework 2

Rota

Page 36: Criando aplicações RestFul com Zend Framework 2

Api/config/module.config.phphttps://gist.github.com/eminetto/5709324

Page 37: Criando aplicações RestFul com Zend Framework 2

RestController

Page 38: Criando aplicações RestFul com Zend Framework 2

Módulo Application

Módulo Api

Api\Controller\RestController

Page 39: Criando aplicações RestFul com Zend Framework 2

Api/src/Controller/RestControllerhttps://gist.github.com/eminetto/5710862

Page 40: Criando aplicações RestFul com Zend Framework 2

Eventos

Page 41: Criando aplicações RestFul com Zend Framework 2

Um EventManager é um objeto que agrega listeners para um ou mais eventos e que gera (trigger) outros eventos.Um listener é uma função/método (callback) que reage a um evento

Page 42: Criando aplicações RestFul com Zend Framework 2

Módulo Application

Módulo Api

Api\Controller\RestController

Api\PreProcessor\PreProcessor(segurança)

Api\PostProcessor\PostProcessor(serialização)

Page 43: Criando aplicações RestFul com Zend Framework 2

Criando os eventos

Page 44: Criando aplicações RestFul com Zend Framework 2

Alterar o api/Module.phphttps://gist.github.com/eminetto/5710879

PreProcessor: https://gist.github.com/eminetto/5710894

Application/config/entities.config.php (Segurança)https://gist.github.com/eminetto/5710859

PostProcessor: https://gist.github.com/eminetto/5710898

Page 45: Criando aplicações RestFul com Zend Framework 2

SerializandoMúltiplos formatos

Page 46: Criando aplicações RestFul com Zend Framework 2

php composer.phar require jms/serializer:*

src/Api/PostProcessor/AbstractPostProcessor.phphttps://gist.github.com/eminetto/5710903

src/Api/PostProcessor/Json.php https://gist.github.com/eminetto/5710908

src/Api/PostProcessor/Xml.phphttps://gist.github.com/eminetto/5710915

Page 47: Criando aplicações RestFul com Zend Framework 2

Referências