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

REST: Faça o Serviço Direito

REST: Faça o Serviço Direito

Alexandre Gaigalas

November 06, 2011
Tweet

More Decks by Alexandre Gaigalas

Other Decks in Technology

Transcript

  1. 30 de Outubro The Developers Conference 2011 4 Hoje você

    vai ver... • Conceito: Por quê usar REST? • Projeto: REST desde o berço • Implementação: Ferramentas e técnicas
  2. 30 de Outubro The Developers Conference 2011 8 Arquitetura Como

    você organiza elementos de software para alcançar certos objetivos.
  3. 30 de Outubro The Developers Conference 2011 9 Arquitetura Como

    você organiza elementos de software para alcançar certos objetivos. Dados, componentes e conectores
  4. 30 de Outubro The Developers Conference 2011 10 Arquitetura Como

    você organiza elementos de software para alcançar certos objetivos. Performance, escalabilidade, simplicidade, extensibilidade Dados, componentes e conectores
  5. 30 de Outubro The Developers Conference 2011 11 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. 30 de Outubro The Developers Conference 2011 12 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. 30 de Outubro The Developers Conference 2011 13 Regra 1:

    Cliente-Servidor • Portabilidade • Escalabilidade •
  8. 30 de Outubro The Developers Conference 2011 14 Regra 1:

    Cliente-Servidor • Portabilidade • Escalabilidade • Desktop, Mobile, API, etc.
  9. 30 de Outubro The Developers Conference 2011 15 Regra 1:

    Cliente-Servidor • Portabilidade • Escalabilidade • Múltiplos servidores e clientes Desktop, Mobile, API, etc.
  10. 30 de Outubro The Developers Conference 2011 16 Regra 1:

    Cliente-Servidor • Portabilidade • Escalabilidade • http://futurefriend.ly Múltiplos servidores e clientes Desktop, Mobile, API, etc.
  11. 30 de Outubro The Developers Conference 2011 17 Ferramentas Cliente-Servidor

    • Apache HTTP Server • nginx • curl • Zend_Http_Client • github.com/educoder/pest • ...
  12. 30 de Outubro The Developers Conference 2011 18 Nosso Projeto

    • Instalação em 10 servidores. • API, Mobile, Desktop.
  13. 30 de Outubro The Developers Conference 2011 20 Regra 2:

    Sem Estado • Visibilidade • Confiabilidade • Escalabilidade
  14. 30 de Outubro The Developers Conference 2011 21 Regra 2:

    Sem Estado • Visibilidade • Confiabilidade • Escalabilidade Monitoramento, estatísticas
  15. 30 de Outubro The Developers Conference 2011 22 Regra 2:

    Sem Estado • Visibilidade • Confiabilidade • Escalabilidade Recuperação de falhas simplificada Monitoramento, estatísticas
  16. 30 de Outubro The Developers Conference 2011 23 Regra 2:

    Sem Estado • Visibilidade • Confiabilidade • Escalabilidade Recuperação de falhas simplificada Monitoramento, estatísticas Cache, balanceamento de carga
  17. 30 de Outubro The Developers Conference 2011 24 Nosso Projeto

    • Instalação em 10 servidores. • API, Mobile, Desktop. • Autenticação via Digest/OAuth. • Página auxiliar para navegadores.
  18. 30 de Outubro The Developers Conference 2011 25 Regra 3:

    Cache • Eficiência • Performance • Escalabilidade
  19. 30 de Outubro The Developers Conference 2011 26 Regra 3:

    Cache • Eficiência • Performance • Escalabilidade Menos requisições
  20. 30 de Outubro The Developers Conference 2011 27 Regra 3:

    Cache • Eficiência • Performance • Escalabilidade Menor latência para o cliente Menos requisições
  21. 30 de Outubro The Developers Conference 2011 28 Regra 3:

    Cache • Eficiência • Performance • Escalabilidade Menor latência para o cliente Menos requisições Cache, balanceamento de carga
  22. 30 de Outubro The Developers Conference 2011 29 Ferramentas para

    Cache • nginx • Varnish Cache • Apache mod_cache • yslow pra testar
  23. 30 de Outubro The Developers Conference 2011 30 Nosso Projeto

    • Instalação em 10 servidores. • API, Mobile, Desktop. • Autenticação via Digest/OAuth. • Página auxiliar para navegadores. • Headers para cache.
  24. 30 de Outubro The Developers Conference 2011 31 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. 21 de Agosto The Developers Conference 2011 32 URI •

    Identificação universal de recursos
  26. 21 de Agosto The Developers Conference 2011 33 URI •

    Identificação universal de recursos • Desacoplada da representação
  27. 21 de Agosto The Developers Conference 2011 34 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] • …
  28. 21 de Agosto The Developers Conference 2011 35 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
  29. 21 de Agosto The Developers Conference 2011 39 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
  30. 21 de Agosto The Developers Conference 2011 40 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
  31. 30 de Outubro The Developers Conference 2011 42 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
  32. 30 de Outubro The Developers Conference 2011 43 Nosso Projeto

    • 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. 30 de Outubro The Developers Conference 2011 44 Regra 5:

    Camadas • Simplicidade • Extensibilidade • Escalabilidade
  34. 30 de Outubro The Developers Conference 2011 45 Regra 5:

    Camadas • Simplicidade • Extensibilidade • Escalabilidade Implementação independente
  35. 30 de Outubro The Developers Conference 2011 46 Regra 5:

    Camadas • Simplicidade • Extensibilidade • Escalabilidade Firewalls, segurança, proxies Implementação independente
  36. 30 de Outubro The Developers Conference 2011 47 Regra 5:

    Camadas • Simplicidade • Extensibilidade • Escalabilidade Firewalls, segurança, proxies Implementação independente Cache, balanceamento de carga
  37. 30 de Outubro The Developers Conference 2011 48 Nosso Projeto

    • 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.
  38. 30 de Outubro The Developers Conference 2011 49 Regra Dica

    6: Código sob Demanda • CSS • Javascript
  39. 30 de Outubro The Developers Conference 2011 50 Regra Dica

    6: Código sob Demanda • CSS • Javascript Comportamento Apresentação
  40. 30 de Outubro The Developers Conference 2011 51 Regra Dica

    6: Código sob Demanda • CSS • Estilos • Media queries • ... • Javascript Comportamento Apresentação
  41. 30 de Outubro The Developers Conference 2011 52 Regra Dica

    6: Código sob Demanda • CSS • Estilos • Media queries • ... • Javascript • AJAX • Feature Detection • ... Comportamento Apresentação
  42. 30 de Outubro The Developers Conference 2011 53 Ferramentas pra

    Código sob Demanda • Modernizr (http://modernizr.com) • Frameless (http://framelessgrid.com)
  43. 30 de Outubro The Developers Conference 2011 54 Nosso Projeto

    • 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
  44. 30 de Outubro The Developers Conference 2011 55 Hoje você

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