Upgrade to Pro — share decks privately, control downloads, hide ads and more …

REST: Faça o Serviço Direito 2.0

REST: Faça o Serviço Direito 2.0

Acompanhe o projeto, modelagem, conceitos e ferramentas para o desenvolvimento de um sistema RESTful completo.

Alexandre Gaigalas

December 03, 2011
Tweet

More Decks by Alexandre Gaigalas

Other Decks in Programming

Transcript

  1. 3 de Novembro PHP Conference 2011 3 Hoje você vai

    ver... • Conceito: Por quê usar REST? • Projeto: REST desde o berço • Implementação: Ferramentas e técnicas
  2. 3 de Novembro PHP Conference 2011 7 Arquitetura Como você

    organiza elementos de software para alcançar certos objetivos.
  3. 3 de Novembro PHP Conference 2011 8 Arquitetura Como você

    organiza elementos de software para alcançar certos objetivos. Dados, componentes e conectores
  4. 3 de Novembro PHP Conference 2011 9 Arquitetura Como você

    organiza elementos de software para alcançar certos objetivos. Performance, escalabilidade, simplicidade, extensibilidade Dados, componentes e conectores
  5. 3 de Novembro PHP Conference 2011 10 Arquitetura Como você

    organiza elementos de software para alcançar certos objetivos. Dados, componentes e conectores Estilo Arquitetural Como você alcança certos objetivos com determinadas regras de organização dos elementos de software. Performance, escalabilidade, simplicidade, extensibilidade
  6. 3 de Novembro PHP Conference 2011 11 Arquitetura Como você

    organiza elementos de software para alcançar certos objetivos. REST Dados, componentes e conectores Estilo Arquitetural Como você alcança certos objetivos com determinadas regras de organização dos elementos de software. Performance, escalabilidade, simplicidade, extensibilidade
  7. 3 de Novembro PHP Conference 2011 12 Regra 1: Cliente-Servidor

    • Portabilidade • Escalabilidade •
  8. 3 de Novembro PHP Conference 2011 13 Regra 1: Cliente-Servidor

    • Portabilidade • Escalabilidade • Desktop, Mobile, API, etc.
  9. 3 de Novembro PHP Conference 2011 14 Regra 1: Cliente-Servidor

    • Portabilidade • Escalabilidade • Múltiplos servidores e clientes Desktop, Mobile, API, etc.
  10. 3 de Novembro PHP Conference 2011 15 Regra 1: Cliente-Servidor

    • Portabilidade • Escalabilidade • http://futurefriend.ly Múltiplos servidores e clientes Desktop, Mobile, API, etc.
  11. 3 de Novembro PHP Conference 2011 16 Ferramentas Cliente-Servidor •

    Apache HTTP Server • nginx • curl • Zend_Http_Client • github.com/educoder/pest • ...
  12. 3 de Novembro PHP Conference 2011 17 Nosso Projeto Imaginário

    • Instalação em 10 servidores. • API, Mobile, Desktop.
  13. 3 de Novembro PHP Conference 2011 18 Regra 2: Sem

    Estado • Visibilidade • Confiabilidade • Escalabilidade
  14. 3 de Novembro PHP Conference 2011 19 Regra 2: Sem

    Estado • Visibilidade • Confiabilidade • Escalabilidade Monitoramento, estatísticas
  15. 3 de Novembro PHP Conference 2011 20 Regra 2: Sem

    Estado • Visibilidade • Confiabilidade • Escalabilidade Recuperação de falhas simplificada Monitoramento, estatísticas
  16. 3 de Novembro PHP Conference 2011 21 Regra 2: Sem

    Estado • Visibilidade • Confiabilidade • Escalabilidade Recuperação de falhas simplificada Monitoramento, estatísticas Cache, balanceamento de carga
  17. 3 de Novembro PHP Conference 2011 22 Nosso Projeto Imaginário

    • Instalação em 10 servidores. • API, Mobile, Desktop. • Autenticação via Digest/OAuth. • Página auxiliar para navegadores.
  18. 3 de Novembro PHP Conference 2011 23 Regra 3: Cache

    • Eficiência • Performance • Escalabilidade
  19. 3 de Novembro PHP Conference 2011 24 Regra 3: Cache

    • Eficiência • Performance • Escalabilidade Menos requisições
  20. 3 de Novembro PHP Conference 2011 25 Regra 3: Cache

    • Eficiência • Performance • Escalabilidade Menor latência para o cliente Menos requisições
  21. 3 de Novembro PHP Conference 2011 26 Regra 3: Cache

    • Eficiência • Performance • Escalabilidade Menor latência para o cliente Menos requisições Cache, balanceamento de carga
  22. 3 de Novembro PHP Conference 2011 27 Ferramentas para Cache

    • nginx • Varnish Cache • Apache mod_cache • yslow pra testar
  23. 3 de Novembro PHP Conference 2011 28 Nosso Projeto Imaginário

    • Instalação em 10 servidores. • API, Mobile, Desktop. • Autenticação via Digest/OAuth. • Página auxiliar para navegadores. • Headers para cache.
  24. 3 de Novembro PHP Conference 2011 29 Regra 4: Interface

    Uniforme • Identificação de Recursos • Manipulação de Representações • Mensagens auto-descritivas • Hipermídia URIs HTML, JPG, etc text/html, image/jpg Links
  25. 3 de Novembro PHP Conference 2011 31 URI • Identificação

    universal de recursos • Desacoplada da representação
  26. 3 de Novembro PHP Conference 2011 32 URI • Identificação

    universal de recursos • Desacoplada da representação • Vários esquemas de identificação • http://dominio.com/path?query=123#hash • ftp://[email protected]/path/arquivo.txt • mailto:[email protected] • …
  27. 3 de Novembro PHP Conference 2011 33 URI • Identificação

    universal de recursos • Desacoplada da representação • Vários esquemas de identificação • http://dominio.com/path?query=123#hash • ftp://[email protected]/path/arquivo.txt • mailto:[email protected] • … • URIs legais não mudam =D
  28. 3 de Novembro PHP Conference 2011 37 http://social.yahooapis.com/v1/user/12345/profile Schema Domain

    Path • Representa um perfil • Desacoplado do formato de resposta • Compreende negociação de conteúdo
  29. 3 de Novembro PHP Conference 2011 38 http://social.yahooapis.com/v1/user/12345/profile Schema Domain

    Path • Representa um perfil • Desacoplado do formato de resposta • Compreende negociação de conteúdo • Abstrai um recurso • Aceita GET para obter perfil • Aceita POST para atualizar perfil
  30. 3 de Novembro PHP Conference 2011 40 Hipermídia • href=”http://example.org/foobar”

    • href=”/foobar” • href=”//example.org/foobar” Identificação absoluta Identificação relativa ao domínio Identificação relativa ao esquema
  31. 3 de Novembro PHP Conference 2011 41 Regra 5: Camadas

    • Simplicidade • Extensibilidade • Escalabilidade Firewalls, segurança, proxies Implementação independente Cache, balanceamento de carga
  32. 3 de Novembro PHP Conference 2011 42 Nosso Projeto Imaginário

    • Instalação em 10 servidores. • API, Mobile, Desktop. • Autenticação via Digest/OAuth. • Página auxiliar para navegadores. • Headers para cache. • Hipermídia HTML e XML.
  33. 3 de Novembro PHP Conference 2011 43 Regra 5: Camadas

    • Simplicidade • Extensibilidade • Escalabilidade
  34. 3 de Novembro PHP Conference 2011 44 Regra 5: Camadas

    • Simplicidade • Extensibilidade • Escalabilidade Implementação independente
  35. 3 de Novembro PHP Conference 2011 45 Regra 5: Camadas

    • Simplicidade • Extensibilidade • Escalabilidade Firewalls, segurança, proxies Implementação independente
  36. 3 de Novembro PHP Conference 2011 46 Nosso Projeto Imaginário

    • Instalação em 10 servidores. • API, Mobile, Desktop. • Autenticação via Digest/OAuth. • Página auxiliar para navegadores. • Proxy-reverso e headers para cache. • Hipermídia HTML e XML.
  37. 3 de Novembro PHP Conference 2011 47 Regra Dica 6:

    Código sob Demanda • CSS • Javascript
  38. 3 de Novembro PHP Conference 2011 48 Regra Dica 6:

    Código sob Demanda • CSS • Javascript Comportamento Apresentação
  39. 3 de Novembro PHP Conference 2011 49 Regra Dica 6:

    Código sob Demanda • CSS • Estilos • Media queries • ... • Javascript Comportamento Apresentação
  40. 3 de Novembro PHP Conference 2011 50 Regra Dica 6:

    Código sob Demanda • CSS • Estilos • Media queries • ... • Javascript • AJAX • Feature Detection • ... Comportamento Apresentação
  41. 3 de Novembro PHP Conference 2011 52 Ferramentas pra Código

    sob Demanda • Modernizr (http://modernizr.com) • Frameless (http://framelessgrid.com)
  42. 3 de Novembro PHP Conference 2011 53 Nosso Projeto Imaginário

    • Instalação em 10 servidores. • API, Mobile, Desktop. • Autenticação via Digest/OAuth. • Página auxiliar para navegadores. • Proxy-reverso e headers para cache. • Hipermídia HTML e XML. • Versão Mobile/Desktop via Javascript sob demanda
  43. 3 de Novembro PHP Conference 2011 54 Hoje você viu...

    • Conceito: Por quê usar REST? • Projeto: REST desde o berço • Implementação: Ferramentas e técnicas