Your SlideShare is downloading. ×
  • Like
REST: Faça o Serviço Direito
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

REST: Faça o Serviço Direito

  • 2,614 views
Published

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

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

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
2,614
On SlideShare
0
From Embeds
0
Number of Embeds
5

Actions

Shares
Downloads
25
Comments
0
Likes
4

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. REST: Faça o Serviço Direito3 de Novembro PHP Conference 2011 1
  • 2. Alexandre Gomes Gaigalashttp://about.me/alganet3 de Novembro PHP Conference 2011 2
  • 3. Hoje você vai ver... ● Conceito: Por quê usar REST? ● Projeto: REST desde o berço ● Implementação: Ferramentas e técnicas3 de Novembro PHP Conference 2011 3
  • 4. REST não é apenas para APIs.3 de Novembro PHP Conference 2011 4
  • 5. 3 de Novembro PHP Conference 2011 5
  • 6. Roy Fielding3 de Novembro PHP Conference 2011 6
  • 7. ArquiteturaComo você organiza elementos de software para alcançar certos objetivos.3 de Novembro PHP Conference 2011 7
  • 8. Arquitetura Dados, componentes e conectoresComo você organiza elementos de software para alcançar certos objetivos.3 de Novembro PHP Conference 2011 8
  • 9. Arquitetura Dados, componentes e conectoresComo você organiza elementos de software para alcançar certos objetivos. Performance, escalabilidade, simplicidade, extensibilidade3 de Novembro PHP Conference 2011 9
  • 10. Arquitetura Dados, componentes e conectoresComo você organiza elementos de software para alcançar certos objetivos. Performance, escalabilidade, simplicidade, extensibilidade Estilo Arquitetural Como você alcança certos objetivos com determinadas regras de organização dos elementos de software.3 de Novembro PHP Conference 2011 10
  • 11. Arquitetura Dados, componentes e conectoresComo você organiza elementos de software para alcançar certos objetivos. Performance, escalabilidade, simplicidade, extensibilidade Estilo Arquitetural REST Como você alcança certos objetivos com determinadas regras de organização dos elementos de software.3 de Novembro PHP Conference 2011 11
  • 12. Regra 1: Cliente-Servidor ● Portabilidade ● Escalabilidade ●3 de Novembro PHP Conference 2011 12
  • 13. Regra 1: Cliente-Servidor Desktop, Mobile, API, etc. ● Portabilidade ● Escalabilidade ●3 de Novembro PHP Conference 2011 13
  • 14. Regra 1: Cliente-Servidor Desktop, Mobile, API, etc. ● PortabilidadeMúltiplos servidores e clientes ● Escalabilidade ●3 de Novembro PHP Conference 2011 14
  • 15. Regra 1: Cliente-Servidor Desktop, Mobile, API, etc. ● PortabilidadeMúltiplos servidores e clientes ● Escalabilidade http://futurefriend.ly ●3 de Novembro PHP Conference 2011 15
  • 16. Ferramentas Cliente-Servidor ● Apache HTTP Server ● nginx ● curl ● Zend_Http_Client ● github.com/educoder/pest ● ...3 de Novembro PHP Conference 2011 16
  • 17. Nosso Projeto Imaginário ● Instalação em 10 servidores. ● API, Mobile, Desktop.3 de Novembro PHP Conference 2011 17
  • 18. Regra 2: Sem Estado ● Visibilidade ● Confiabilidade ● Escalabilidade3 de Novembro PHP Conference 2011 18
  • 19. Regra 2: Sem Estado Monitoramento, estatísticas ● Visibilidade ● Confiabilidade ● Escalabilidade3 de Novembro PHP Conference 2011 19
  • 20. Regra 2: Sem Estado Monitoramento, estatísticas ● VisibilidadeRecuperação de falhas simplificada ● Confiabilidade ● Escalabilidade 3 de Novembro PHP Conference 2011 20
  • 21. Regra 2: Sem Estado Monitoramento, estatísticas ● VisibilidadeRecuperação de falhas simplificada ● Confiabilidade Cache, balanceamento de carga ● Escalabilidade 3 de Novembro PHP Conference 2011 21
  • 22. Nosso Projeto Imaginário ● Instalação em 10 servidores. ● API, Mobile, Desktop. ● Autenticação via Digest/OAuth. ● Página auxiliar para navegadores.3 de Novembro PHP Conference 2011 22
  • 23. Regra 3: Cache ● Eficiência ● Performance ● Escalabilidade3 de Novembro PHP Conference 2011 23
  • 24. Regra 3: Cache Menos requisições ● Eficiência ● Performance ● Escalabilidade3 de Novembro PHP Conference 2011 24
  • 25. Regra 3: Cache Menos requisições ● Eficiência Menor latência para o cliente ● Performance ● Escalabilidade3 de Novembro PHP Conference 2011 25
  • 26. Regra 3: Cache Menos requisições ● Eficiência Menor latência para o cliente ● PerformanceCache, balanceamento de carga ● Escalabilidade3 de Novembro PHP Conference 2011 26
  • 27. Ferramentas para Cache ● nginx ● Varnish Cache ● Apache mod_cache ● yslow pra testar3 de Novembro PHP Conference 2011 27
  • 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.3 de Novembro PHP Conference 2011 28
  • 29. Regra 4: Interface Uniforme ● Identificação de Recursos URIs ● Manipulação de Representações HTML, JPG, etc ● Mensagens auto-descritivas text/html, image/jpg ● Hipermídia Links3 de Novembro PHP Conference 2011 29
  • 30. URI ● Identificação universal de recursos3 de Novembro PHP Conference 2011 30
  • 31. URI ● Identificação universal de recursos ● Desacoplada da representação3 de Novembro PHP Conference 2011 31
  • 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://user@server.net/path/arquivo.txt ● mailto:alexandre@gaigalas.net ● …3 de Novembro PHP Conference 2011 32
  • 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://user@server.net/path/arquivo.txt ● mailto:alexandre@gaigalas.net ● … ● URIs legais não mudam =D3 de Novembro PHP Conference 2011 33
  • 34. http://social.yahooapis.com/v1/user/12345/profile3 de Novembro PHP Conference 2011 34
  • 35. http://social.yahooapis.com/v1/user/12345/profile Schema Domain Path3 de Novembro PHP Conference 2011 35
  • 36. http://social.yahooapis.com/v1/user/12345/profile Schema Domain Path ● Representa um perfil3 de Novembro PHP Conference 2011 36
  • 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údo3 de Novembro PHP Conference 2011 37
  • 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 perfil3 de Novembro PHP Conference 2011 38
  • 39. REST em JSON é quase impossível.3 de Novembro PHP Conference 2011 39
  • 40. Hipermídia Identificação absoluta ● href=”http://example.org/foobar” Identificação relativa ao domínio ● href=”/foobar” Identificação relativa ao esquema ● href=”//example.org/foobar”3 de Novembro PHP Conference 2011 40
  • 41. Regra 5: CamadasImplementação independente ● Simplicidade Firewalls, segurança, proxies ● ExtensibilidadeCache, balanceamento de carga ● Escalabilidade3 de Novembro PHP Conference 2011 41
  • 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.3 de Novembro PHP Conference 2011 42
  • 43. Regra 5: Camadas ● Simplicidade ● Extensibilidade ● Escalabilidade3 de Novembro PHP Conference 2011 43
  • 44. Regra 5: CamadasImplementação independente ● Simplicidade ● Extensibilidade ● Escalabilidade3 de Novembro PHP Conference 2011 44
  • 45. Regra 5: CamadasImplementação independente ● Simplicidade Firewalls, segurança, proxies ● Extensibilidade ● Escalabilidade3 de Novembro PHP Conference 2011 45
  • 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.3 de Novembro PHP Conference 2011 46
  • 47. Regra Dica 6: Código sob Demanda ● CSS ● Javascript3 de Novembro PHP Conference 2011 47
  • 48. Regra Dica 6: Código sob Demanda ● CSS Apresentação ● Javascript Comportamento3 de Novembro PHP Conference 2011 48
  • 49. Regra Dica 6: Código sob Demanda ● CSS Apresentação ● Estilos ● Media queries ● ... ● Javascript Comportamento3 de Novembro PHP Conference 2011 49
  • 50. Regra Dica 6: Código sob Demanda ● CSS Apresentação ● Estilos ● Media queries ● ... ● Javascript Comportamento ● AJAX ● Feature Detection ● ...3 de Novembro PHP Conference 2011 50
  • 51. Responsivo é RESTful Desktop Mobile3 de Novembro PHP Conference 2011 51
  • 52. Ferramentas pra Código sob Demanda ● Modernizr (http://modernizr.com) ● Frameless (http://framelessgrid.com)3 de Novembro PHP Conference 2011 52
  • 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 demanda3 de Novembro PHP Conference 2011 53
  • 54. Hoje você viu... ● Conceito: Por quê usar REST? ● Projeto: REST desde o berço ● Implementação: Ferramentas e técnicas3 de Novembro PHP Conference 2011 54
  • 55. Perguntas?3 de Novembro PHP Conference 2011 55
  • 56. Obrigado!http://joind.in/44733 de Novembro PHP Conference 2011 56