Rest @ Qcon 2010

2.167 visualizações

Publicada em

Apresentação de Guilherme Silveira sobre REST e a web semântica durante o QCon 2010 organizado pela Caelum.

Publicada em: Tecnologia
  • Seja o primeiro a comentar

Rest @ Qcon 2010

  1. 1. REST, semântica e o futuro (!) da arquitetura web Guilherme Silveira
  2. 2. Guilherme Silveira guilherme.silveira@caelum.com.br
  3. 3. são paulo
  4. 4. são paulo
  5. 5. são paulo
  6. 6. são paulo
  7. 7. são paulo
  8. 8. Guilherme Silveira guilherme.silveira@caelum.com.br 2002 guj.com.br 2003 vraptor 2004 caelum.com.br xp, xstream 2006 scrum 2009 restfulie, lean 2010 tectura.com.br
  9. 9. bank.com
  10. 10. bank.com calendar.com
  11. 11. bank.com kayak.com calendar.com
  12. 12. bank.com kayak.com caelum.com.br calendar.com
  13. 13. bank.com kayak.com calendar.com caelum.com.br
  14. 14. bank.com kayak.com calendar.com caelum.com.br
  15. 15. CORBA paraíso?
  16. 16. EJB paraíso?
  17. 17. SOAP paraíso?
  18. 18. REST minimizar o acoplamento
  19. 19. service locator em integração: acoplamento mais alto! kayak pay kayak guilherme
  20. 20. service locator em integração: acoplamento mais alto! kayak pay kayak guilherme
  21. 21. kayak.com: pagamento de um vôo <?xml version="1.0" encoding="UTF-8" standalum="yes"?> <voo> <informacoes> <de>GRU</de> <ate>JFK</ate> </informacoes>   <valor>900.00</valor> <link rel="payment" href="http://kayak.com/payment/custom"/> </voo>
  22. 22. kayak.com: pagamento de um vôo <?xml version="1.0" encoding="UTF-8" standalum="yes"?> <voo> <informacoes> <de>GRU</de> <ate>JFK</ate> </informacoes>   <valor>900.00</valor> <link rel="payment" href="http://kayak.com/payment/custom"/> </voo>
  23. 23. kayak.com: pagamento de um vôo voo = Restfulie.at('http://kayak.com/f/574XR4').get confirmacao = voo.link("payment"). patch(todo_o_inferno_do_seu_cartao, valor) envia_email(confirmacao)
  24. 24. kayak.com: pagamento de um vôo voo = Restfulie.at('http://kayak.com/f/574XR4').get confirmacao = voo.link("payment"). patch(todo_o_inferno_do_seu_cartao, valor) envia_email(confirmacao)
  25. 25. kayak.com: pagamento de um vôo <?xml version="1.0" encoding="UTF-8" standalum="yes"?> <voo> <informacoes> <de>GRU</de> <ate>JFK</ate> </informacoes>   <valor>900.00</valor> <link rel="payment" href="http://paypal.com/55788"/> </voo>
  26. 26. kayak.com: pagamento de um vôo <?xml version="1.0" encoding="UTF-8" standalum="yes"?> <voo> <informacoes> <de>GRU</de> <ate>JFK</ate> </informacoes>   <valor>900.00</valor> <link rel="payment" href="http://paypal.com/55788"/> </voo>
  27. 27. viagem = recurso http://kayak.com/f/574XR4 pagamento = recurso uma_uri_qualquer
  28. 28. dependency injection em integração: give me my links! @kayak pay kayak guilherme @visa
  29. 29. dependency injection em integração: give me my links! @kayak pay kayak guilherme @visa
  30. 30. não viajo sozinho
  31. 31. meu amigo @sergio_caelum
  32. 32. meu amigo @sergio_caelum Bilu bilu
  33. 33. kayak.com: pagamento de um vôo voo = Restfulie.at('http://kayak.com/f/574XR4').get confirmacao = voo.link("payment"). patch(todo_o_inferno_do_seu_cartao, valor/2) envia_email(confirmacao) voo = Restfulie.at(uri_recebida).get confirmacao = voo.link("payment"). patch(todo_o_inferno_do_seu_cartao, valor/2)
  34. 34. kayak.com: pagamento de um vôo voo = Restfulie.at('http://kayak.com/f/574XR4').get confirmacao = voo.link("payment"). patch(todo_o_inferno_do_seu_cartao, valor/2) envia_email(confirmacao) voo = Restfulie.at(uri_recebida).get confirmacao = voo.link("payment"). patch(todo_o_inferno_do_seu_cartao, valor/2)
  35. 35. kayak.com: pagamento de um vôo voo = Restfulie.at('http://kayak.com/f/574XR4').get confirmacao = voo.link("payment"). patch(todo_o_inferno_do_seu_cartao, valor/2) envia_email(confirmacao) voo = Restfulie.at(uri_recebida).get confirmacao = voo.link("payment"). patch(todo_o_inferno_do_seu_cartao, valor/2)
  36. 36. kayak.com: pagamento de um vôo voo = Restfulie.at('http://kayak.com/f/574XR4').get confirmacao = voo.link("payment"). patch(todo_o_inferno_do_seu_cartao, valor/2) envia_email(confirmacao) voo = Restfulie.at(uri_recebida).get confirmacao = voo.link("payment"). patch(todo_o_inferno_do_seu_cartao, valor/2)
  37. 37. calendar: minha agenda pessoal
  38. 38. calendar: minha agenda pessoal eu = Restfulie.at('http://users.google.com') .with(auth).get eu.link("calendar").patch(voo.link("self"))
  39. 39. calendar: minha agenda pessoal eu = Restfulie.at('http://users.google.com') .with(auth).get eu.link("calendar").patch(voo.link("self"))
  40. 40. calendar: minha agenda pessoal eu.link("calendar").patch(link_para_aniversarios) eu.link("calendar").patch(link_para_reserva_do_hotel) eu.link("calendar").patch(link_para_passeios)
  41. 41. mas qual o formato do pagamento ou calendário?
  42. 42. #json, #xml, #soap #etc?
  43. 43. qual #json, #xml #etc?
  44. 44. exercício
  45. 45. quem é esse?
  46. 46. quem é essa?
  47. 47. fácil? e ela?
  48. 48. fácil? e ela? lh a! fi in ha é m n ão
  49. 49. conteúdo sem semântica não tem valor!
  50. 50. integração na web
  51. 51. #json, @sergio_caelum
  52. 52. #?
  53. 53. de onde veio o # e o @?
  54. 54. “watching @guilhermecaelum #qconsp *10 great talk” Atenção: esse tweet é só uma sugestão!
  55. 55. controlled vocabulary
  56. 56. emergiu no twitter, por exemplo
  57. 57. inventar antes o controlled vocabulary?
  58. 58. top down? Big Design Up Front O monstro do lago SOAP, longa de 2001
  59. 59. formato de calendário é comum! ele é pequeno bem pequeno ele é micro
  60. 60. e o calendário com isso?
  61. 61. e o calendário com isso? Cancelar ==> Cancela o vôo Cancelar ==> Envia email para um hotel Cancelar ==> Recusa uma reunião via email
  62. 62. e o calendário com isso? í di a! pe rm s: hy li nk co m to s a fo rm ic ro m Cancelar ==> Cancela o vôo Cancelar ==> Envia email para um hotel Cancelar ==> Recusa uma reunião via email
  63. 63. caelum: no trabalho caelum = Restfulie.at("http://caelum.com.br").get caelum.link("reembolsos").patch(confirmacao) caelum.link("calendar").patch(confirmacao)
  64. 64. caelum: o chefe caelum = Restfulie.at("http://caelum.com.br") .with(auth).get caelum.link("reembolsos").get[0] .link("confirmation").post :accept => true
  65. 65. caelum: o chefe guilherme kayak
  66. 66. caelum: o chefe guilherme kayak
  67. 67. caelum: o chefe guilherme kayak paypal
  68. 68. caelum: o chefe guilherme kayak paypal
  69. 69. caelum: o chefe guilherme kayak paypal calendar
  70. 70. caelum: o chefe guilherme kayak paypal calendar
  71. 71. caelum: o chefe guilherme kayak paypal calendar caelum
  72. 72. caelum: o chefe guilherme kayak paypal calendar caelum
  73. 73. caelum: o chefe guilherme kayak paypal chefe calendar caelum
  74. 74. caelum: o chefe guilherme kayak paypal chefe calendar caelum
  75. 75. em casa: minha esposa esposa = Restfulie.at("http://users.google.com") .with(esposa).get esposa.link("friends") .get["Guilherme Silveira"].link("calendar")
  76. 76. economizando # busca um voo def voos_de(site)   base = Restfulie.at(site).get   voos = base.link("opensearch").get.fill("flight").with(:from => "GRU", :to => "JFK").get end voos = voos_de("kayak") voos << voos_de("tam") voos << voos_de("gol") voos << voos_de("cvc") voo_mais_barato(voos).link("payment").post(inferno_do_cartao)
  77. 77. banco voo = voo_mais_barato(voos) banco = Restfulie.at("meubanco").auth(eu).get auth = banco.cartoes["lisa"] .authorization(1.min, voo.preco) voo.link("payment").post(auth) mais_barato(voos).link("payment")...
  78. 78. email
  79. 79. email guilherme super viagem
  80. 80. email guilherme super viagem
  81. 81. email guilherme super viagem caelum
  82. 82. email guilherme super viagem caelum
  83. 83. email guilherme super viagem caelum kayak
  84. 84. email guilherme super viagem caelum kayak
  85. 85. email guilherme super viagem caelum kayak
  86. 86. mostra esse desacoplamento!
  87. 87. que ano comprou online? 2001?
  88. 88. mudou algo?
  89. 89. mudou algo? tm l dh
  90. 90. mudou algo? tm l dh fla sh
  91. 91. mudou algo? tm l dh fla sh ke ts so c web
  92. 92. mudou algo? tm l dh fla sh ke ts so c p pt web c om im o pé ss so u
  93. 93. os serviços mudaram
  94. 94. mas você compra igualmente
  95. 95. como eu consigo comprar?
  96. 96. entrar
  97. 97. escolher
  98. 98. escolher outro
  99. 99. comprar
  100. 100. comprar
  101. 101. sequencia
  102. 102. olhar
  103. 103. olhar
  104. 104. o que posso fazer?
  105. 105. o que posso fazer?
  106. 106. fazer
  107. 107. fazer
  108. 108. bottom up design by committe mime type? microformato controlled vocabulary
  109. 109. hypermídia viabilizando a integração através da web
  110. 110. sites www.caelum.com.br www.agilenomundoreal.com.br blog.caelumobjects.com (english) frameworks onde estou? restfulie.caelum.com.br @guilhermecaelum vraptor.caelum.com.br www.tectura.com.br restfulie: ruby, java, .net, JS, python etc mais palestras no evento
  111. 111. Guilherme Silveira guilherme.silveira@caelum.com.br
  112. 112. Not Only Coffee: NOCoffee aguaquente.wordpress.com

×