Successfully reported this slideshow.

ReSTFul Api's com FRAPI

4,499 views

Published on

Crie suas API

Published in: Technology
  • Be the first to comment

ReSTFul Api's com FRAPI

  1. 1. RESTFUL webservicesConstruindo Apishttp://bit.ly/ZhgkiB
  2. 2. AgendaEuAPIsFrapiDemo
  3. 3. Mercantólogo por formação, desenvolvedor por paixão!Ativista por consciência!Alex Piaz (@zaip)alex@piaz.com.brhttp://www.zaip.net
  4. 4. Há 15+ anos nas interwebs...
  5. 5. Há 13 anos...1998
  6. 6. Há 7 anos...1998www.socioambiental.org
  7. 7. Gleilson Miranda/Secretaria de Comunicação do Estado do Acre/FUNAI
  8. 8. Chefe Almir Suruí
  9. 9. 1998
  10. 10. É só fazer um "XML" queresolve....
  11. 11. É só fazer um "XML" queresolve....
  12. 12. Ao vivo é muito pior!
  13. 13. Ao vivo é muito pior!http://www.youtube.com/watch?v=9C-IDT__1HE
  14. 14. APIhttp://en.wikipedia.org/wiki/Application_programming_interface
  15. 15. UMA API É UM CONTRATO !
  16. 16. Controle de acesso
  17. 17. IDENTIFICACAOhttp://blogs.estadao.com.br/radar-pop/homem-e-preso-em-recife-por-apresentar-rg-com-foto-de-jack-nicholson/
  18. 18. Autorização
  19. 19. Uso
  20. 20. Documentação
  21. 21. Formatos de saída
  22. 22. versões
  23. 23. Mensagens!
  24. 24. ReSTRepresentational State Transfer
  25. 25. http://alganet.github.io/rest-client-side/#/rest-roy
  26. 26. Estilo Arquitetural
  27. 27. HTTPRFC 2616
  28. 28. HTTP PARA DESIGNERSCliente / ServidorInterface UniformeCamadasStatelessCache
  29. 29. ReSTafarianos x Pragmaresticos
  30. 30. ReST Constraints● Cliente/Servidor● Interface Uniforme● Cache● Stateless● Camadas● Código sob demanda *
  31. 31. Recursos :: URLs + Verbos HTTPInterface UniformeGET http://api.piaz.com.br/ufoapi/v1/casos/1POST http://api.piaz.com.br/ufoapi/v1/casos/1PUT http://api.piaz.com.br/ufoapi/v1/casos/1DELETE http://api.piaz.com.br/ufoapi/v1/casos/1HEAD http://api.piaz.com.br/ufoapi/v1/casos/1Recursos são substantivosPrefira o plural ao singular2 URLs por recurso
  32. 32. Manipulação dos recursos através de suas representaçõesInterface UniformeGET http://api.piaz.com.br/ufoapi/v1/casos/1
  33. 33. Mensagens auto-descritivasInterface UniformeCabeçalhos e Status Codes do HTTP1xx - Informativo2xx - Sucesso3xx - Redirecionamento4xx - Erro do cliente5xx - Erro do servidor
  34. 34. http://stateless.co/hal_specification.htmlHALHypertext Application LanguageHATEOAS - Hypermedia as the Engine of Application StateInterface Uniforme{"_links": {"self": { "href": "/ufoapi/v1/casos/2" },"next": { "href": "/ufoapi/v1/casos/3" },"prev": { "href": "/ufoapi/v1/casos/1" },} ,}WRMLWeb resource modeling languagehttp://www.wrml.org/modelingLanguage
  35. 35. Richardson Maturity Model
  36. 36. E o FRAPI entra em cena!http://getfrapi.com
  37. 37. FRAMEWORK API
  38. 38. INSTALAÇÃO
  39. 39. INSTALAÇÃO / Requisitos mínimos○ Webserver (apache, nginx, iis)○ PHP >= 5.2.4○ gettext○ XMLWriter○ PEAR○ APC ** Pode ser instalado sem o APC ou com outromecanismo de caching mas não é recomendadohttp://frapi.github.com/installing/caching.htmlhttp://frapi.github.com/installing/index.html
  40. 40. git clone git://github.com/frapi/frapi.gitgit clone git://github.com/zaip/frapi.gitouwget https://github.com/frapi/frapi/tarball/mastertar -xzvf frapi-frapi-VERSION.tar.gzFRAPI_PATH = local/onde/voce/desempacotou/o/frapiINSTALAÇÃO / Obtendo o software
  41. 41. Interface administrativa API PúblicaCamadas de interação● Zend Framework● Actions e Errors● Autenticação● Documentação● Ambiente de testes● Produção● PHP● Cache● Request● ResponseInterface CLI● Admin via terminal
  42. 42. <VirtualHost *:80>ServerName admin.frapiDirectoryIndex index.phpServerAdmin admin@api.frapi# This should be omitted in the productionenvironmentSetEnv APPLICATION_ENV developmentDocumentRoot FRAPI_PATH/src/ frapi/admin/public<Directory FRAPI_PATH/src/frapi/admin/public>AllowOverride AllOrder deny,allowAllow from All</Directory></VirtualHost>Interface Administrativa<VirtualHost *:80>ServerName api.frapiServerAdmin admin@api.frapiDocumentRoot FRAPI_PATH/src/ frapi/public# This should be omitted in the productionenvironmentSetEnv APPLICATION_ENV development<Directory FRAPI_PATH/src/frapi/public>AllowOverride AllOrder deny,allowAllow from All</Directory></VirtualHost>API PúblicaINSTALAÇÃO / Configurando2 virtual hostPermissões de acessochown -R username.web-user FRAPI_PATHchmod 775 FRAPI_PATH/src/frapi/custom/Actionchmod 775 FRAPI_PATH/src/frapi/custom/Config/chmod 664 FRAPI_PATH/src/frapi/custom/Config/*.xml
  43. 43. Dá pra instalar sem 2 vhosts?http://www.felipemarques.com.br/tag/alex-piaz/SIM
  44. 44. INSTALAÇÃO / Finalizando
  45. 45. UFO APIPrincipais casos da Ufologia Mundial REST!CRUD
  46. 46. UFO APIModeloMensagens de erro (Not found [404] / NO PUT/DELETE/POST [405] )2 URLs === 2 actions//api.piaz.com.br/ufoapi/v1/casos (GET POST)//api.piaz.com.br/ufoapi/v1/casos/{id} (GET PUT DELETE)Complexidade vai na Query String//api.piaz.com.br/ufoapi/v1/casos?pais=BrasilPrincipais casos da Ufologia Mundial em ReSTFul!
  47. 47. UFO APIPrincipais casos da Ufologia Mundial REST!Custom_Model_Caso()getCasos()getCaso($id)getCasosPorPais($pais)insertCaso($data)updateCaso($id,$data)deleteCaso($id)
  48. 48. FRAPI_PATH/src/frapi/custom/Action
  49. 49. UFO APIPrincipais casos da Ufologia Mundial em ReSTFul!Métodos disponibilizados pelo FRAPIexecuteGet()executePost()executePut()executeDelete()executeHead()http://frapi.github.com/developing/coding-actions.html
  50. 50. UFO APIPrincipais casos da Ufologia Mundial em ReSTFul!Mensagens de errohttp://en.wikipedia.org/wiki/List_of_HTTP_status_codes
  51. 51. UFO APIAction Casos - http://ufo-api.piaz.com.br/casos (GET POST HEAD)
  52. 52. UFO APIAction Casos - http://api.piaz.com.br/ufoapi/v1/casos (GET)
  53. 53. UFO APIAction Casos - http://api.piaz.com.br/ufoapi/v1/casos (POST)
  54. 54. UFO APIAction Casos - http://api.piaz.com.br/ufoapi/v1/casos (HEAD)
  55. 55. UFO APIPrincipais casos da Ufologia Mundial ReST!http://api.piaz.com.br/ufoapi/v1/casos/{id} (POST PUT DELETE)
  56. 56. UFO APIAction Caso - http://api.piaz.com.br/ufoapi/v1/casos/{id} (GET)
  57. 57. UFO APIAction Caso - http://api.piaz.com.br/ufoapi/v1/casos/{id} (PUT)
  58. 58. UFO APIAction Caso - http://api.piaz.com.br/ufoapi/v1/casos/{id} (DELETE)
  59. 59. Gerando documentação...http://frapi-admin/docs/generate/format/texthttp://frapi-admin/docs/generate/format/htmlhttp://frapi-admin/docs/generate/format/mdownhttp://frapi-admin/docs/generate/format/pdf
  60. 60. Utilidadesimplementing-restExploring the implementation aspects of the REST architectural style.https://code.google.com/p/implementing-rest/PostMan - Rest Client para o Chromehttps://chrome.google.com/webstore/detail/fdmmgilgnpjigdojojpjoooidkmcomcmTese do Roy Fieldling (nascimento do ReST)http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htmRichardson Maturity Modelhttp://martinfowler.com/articles/richardsonMaturityModel.htmlSwagger (Documentação para sua API)https://developers.helloreverb.com/swagger/API Best Praticeshttp://apigee.com/about/api-best-practicesHTTP (RFC 2616)http://tools.ietf.org/html/rfc2616
  61. 61. Arquivos desta palestrahttps://www.dropbox.com/sh/u0qqmm49ursrtpg/mofogHmsIi

×