Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Criando aplicações RestFul com Zend Framework 2

6,174 views

Published on

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

Published in: Technology

Criando aplicações RestFul com Zend Framework 2

  1. 1. Criandoaplicações RESTFulcomZend Framework2
  2. 2. Quem?
  3. 3. EltonMinetto Graduado/pós-graduadoemCiênciadaComputação Desenvolvedordesde1997 Professordesde2004 AutordetrêslivrossobrePHPeumsobregridcomputing PodcasternoBizandCode CTOdaCoderockredoCodeSquad MembrodadiretoriadaABRAPHP
  4. 4. Princípios REST
  5. 5. Dêatodasascoisasum identificador
  6. 6. http://zf2.dev/api/v1/album.album.json http://zf2.dev/api/v1/album.album.json/1 http://example.com/customers/1234 http://www.infoq.com/br/articles/rest-introduction
  7. 7. Vinculeascoisas
  8. 8. <orderself="http://x.com/orders/1234"> <amount>23</amount> <productref="http://x.com/products/4554"></product> <customerref="http://x.com/customers/1234"></customer> </order>
  9. 9. Utilizeosmétodospadrão
  10. 10. GET,PUT,POST,DELETE,HEAD,OPTIONS
  11. 11. Recursoscommúltiplas representações
  12. 12. http://zf2.dev/api/v1/album.album.json http://zf2.dev/api/v1/album.album.xml ouusaroheaderAccept
  13. 13. Comuniquesemestado
  14. 14. “[...]umservidornãodeveriaguardaroestadoda comunicaçãodequalquerumdosclientesquese comuniquecomelealémdeumaúnicarequisição.A razãomaisóbviaparaissoéescalabilidade-onúmerode clientesquepodeminteragircomoservidorseria consideravelmenteimpactadosefosseprecisomantero estadodocliente”
  15. 15. ZendFramework2
  16. 16. DesenvolvidopelaZendjuntocoma comunidadePHP Maisde2anosdedesenvolvimento Maisde200profissionaisenvolvidos Apoio Google,Microsoft,entreoutras
  17. 17. Mãonamassa!
  18. 18. Composer
  19. 19. mkdir rest_zf2 cd rest_zf2 curl -sS https://getcomposer.org/installer | php
  20. 20. ZFTool
  21. 21. php composer.phar require zendframework/zftool:dev- master
  22. 22. Criandooprojeto
  23. 23. php ./vendor/bin/zf.php create project ~/Documents/ Projects/vagrant/rest_zf2/Todo cd Todo php composer.phar self-update php composer.phar install
  24. 24. ApacheVHost
  25. 25. <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>
  26. 26. Módulos
  27. 27. "[]ummóduloéumacoleçãodecódigo eoutrosarquivosqueresolveum problemaespecíficodeumaaplicaçãoou site." MattewO'Phinney.ZendFrameworkprojectleader
  28. 28. Módulo Application Módulo Api Módulo Admin
  29. 29. CriandoomóduloApi
  30. 30. cd ../ php ./vendor/bin/zf.php create module Api ~/ Documents/Projects/vagrant/rest_zf2/Todo/
  31. 31. Bancodedados
  32. 32. global.php https://gist.github.com/eminetto/5709289 sqlite3 data/todo.db create table item (id INTEGER PRIMARY KEY AUTOINCREMENT, description text, done int);
  33. 33. EntidadeseTableGateway
  34. 34. src/Application/Model/Item.php https://gist.github.com/eminetto/5709294 src/Application/Model/ItemTable.php https://gist.github.com/eminetto/5709297 Application/Module.php https://gist.github.com/eminetto/5710850
  35. 35. Rota
  36. 36. Api/config/module.config.php https://gist.github.com/eminetto/5709324
  37. 37. RestController
  38. 38. Módulo Application Módulo Api ApiControllerRestController
  39. 39. Api/src/Controller/RestController https://gist.github.com/eminetto/5710862
  40. 40. Eventos
  41. 41. UmEventManageréumobjetoqueagregalistenerspara umoumaiseventosequegera(trigger)outroseventos. Umlisteneréumafunção/método(callback)quereagea umevento
  42. 42. Módulo Application Módulo Api ApiControllerRestController ApiPreProcessorPreProcessor (segurança) ApiPostProcessorPostProcessor (serialização)
  43. 43. Criandooseventos
  44. 44. Alterar o api/Module.php https://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
  45. 45. Serializando Múltiplosformatos
  46. 46. php composer.phar require jms/serializer:* src/Api/PostProcessor/AbstractPostProcessor.php https://gist.github.com/eminetto/5710903 src/Api/PostProcessor/Json.php https://gist.github.com/eminetto/5710908 src/Api/PostProcessor/Xml.php https://gist.github.com/eminetto/5710915
  47. 47. Referências
  48. 48. http://www.infoq.com/br/articles/rest-introduction http://www.slideshare.net/Alganet/rest-key http://framework.zend.com/manual/2.2/en/user-guide/ overview.html http://jmsyst.com/libs/serializer https://github.com/Coderockr/ApiModule
  49. 49. @eminetto http://www.eltonminetto.net http://coderockr.com http://code-squad.com eminetto@coderockr.com

×