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

REST: Faça o Serviço Direito 3.0

REST: Faça o Serviço Direito 3.0

Uma explicação sobre REST e Hipermídia, sua evolução histórica e exemplos naturais de seu uso com foco em resolução de problemas.

Alexandre Gaigalas

June 14, 2012
Tweet

More Decks by Alexandre Gaigalas

Other Decks in Programming

Transcript

  1. 14 de Junho VII Congresso Científico Uniararas 2 Alexandre Gomes

    Gaigalas http://about.me/alganet Augusto Pascutti http://about.me/augustohp
  2. 14 de Junho VII Congresso Científico Uniararas 5 1. G.

    D. Abowd, R. Allen, and D. Garlan. Formalizing style to understand descriptions of software architecture. ACM Transactions on Software Engineering and Methodology, 4(4), Oct. 1995, pp. 319–364. A shorter version also appeared as: Using style to understand descriptions of software architecture. In Proceedings of the First ACM SIGSOFT Symposium on the Foundations of Software Engineering (SIGSOFT‘93), Los Angeles, CA, Dec. 1993, pp. 9–20.
  3. 14 de Junho VII Congresso Científico Uniararas 6 1. G.

    D. Abowd, R. Allen, and D. Garlan. Formalizing style to understand descriptions of software architecture. ACM Transactions on Software Engineering and Methodology, 4(4), Oct. 1995, pp. 319–364. A shorter version also appeared as: Using style to understand descriptions of software architecture. In Proceedings of the First ACM SIGSOFT Symposium on the Foundations of Software Engineering (SIGSOFT‘93), Los Angeles, CA, Dec. 1993, pp. 9–20. Antes elas eram assim
  4. 14 de Junho VII Congresso Científico Uniararas 13 1. G.

    D. Abowd, R. Allen, and D. Garlan. Formalizing style to understand descriptions of software architecture. ACM Transactions on Software Engineering and Methodology, 4(4), Oct. 1995, pp. 319–364. A shorter version also appeared as: Using style to understand descriptions of software architecture. In Proceedings of the First ACM SIGSOFT Symposium on the Foundations of Software Engineering (SIGSOFT‘93), Los Angeles, CA, Dec. 1993, pp. 9–20.
  5. 14 de Junho VII Congresso Científico Uniararas 14 1. G.

    D. Abowd, R. Allen, and D. Garlan. Formalizing style to understand descriptions of software architecture. ACM Transactions on Software Engineering and Methodology, 4(4), Oct. 1995, pp. 319–364. A shorter version also appeared as: Using style to understand descriptions of software architecture. In Proceedings of the First ACM SIGSOFT Symposium on the Foundations of Software Engineering (SIGSOFT‘93), Los Angeles, CA, Dec. 1993, pp. 9–20.
  6. 14 de Junho VII Congresso Científico Uniararas 15 1. G.

    D. Abowd, R. Allen, and D. Garlan. Formalizing style to understand descriptions of software architecture. ACM Transactions on Software Engineering and Methodology, 4(4), Oct. 1995, pp. 319–364. A shorter version also appeared as: Using style to understand descriptions of software architecture. In Proceedings of the First ACM SIGSOFT Symposium on the Foundations of Software Engineering (SIGSOFT‘93), Los Angeles, CA, Dec. 1993, pp. 9–20.
  7. 14 de Junho VII Congresso Científico Uniararas 20 URIs apontam

    pra conceitos coisas idéias pessoas lugares
  8. 14 de Junho VII Congresso Científico Uniararas 21 URIs apontam

    pra conceitos coisas idéias pessoas lugares eventos
  9. 14 de Junho VII Congresso Científico Uniararas 22 Uniform Resource

    Identifier (Identificador Uniforme de Recursos) • http://www.google.com • http://www.google.com/search?q=rest • ftp://user:[email protected] • mailto:[email protected]
  10. 14 de Junho VII Congresso Científico Uniararas 24 <link href=”http://...”>

    <a href=”mailto://...”> <img src=”http://...”> <script src=”http://...”> {“links”:[{“href”:”...”}] } <link href=”http://...”> <a href=”mailto://...”> <img src=”http://...”> <script src=”http://...”> {“links”:[{“href”:”...”}] }
  11. 14 de Junho VII Congresso Científico Uniararas 25 <link href=”http://...”>

    <a href=”mailto://...”> <img src=”http://...”> <script src=”http://...”> {“links”:[{“href”:”...”}] } HTML/XML JSON-Schema (draft) <link href=”http://...”> <a href=”mailto://...”> <img src=”http://...”> <script src=”http://...”> {“links”:[{“href”:”...”}] } HTML/XML JSON-Schema (draft)
  12. 14 de Junho VII Congresso Científico Uniararas 26 GET /search?q=rest

    Host: google.com Accept-Language: pt-BR, * <!doctype... <html... <head... <body... Documento Cabeçalho da requisição
  13. 14 de Junho VII Congresso Científico Uniararas 27 GET /search?q=rest

    Host: google.com Accept-Language: pt-BR, * <!doctype... <html... <head... <body... Documento Cabeçalho da requisição Cabeçalho do documento
  14. 14 de Junho VII Congresso Científico Uniararas 28 GET /photos/80gmf7

    Host: mypictures.com Accept-Language: pt-BR, * Accept: text/html, image/jpeg, */* Documento Cabeçalho da requisição
  15. 14 de Junho VII Congresso Científico Uniararas 29 GET /photos/80gmf7

    Host: mypictures.com Accept-Language: pt-BR, * Accept: text/html, image/jpeg, */* Documento Cabeçalho da requisição Cervejas Belgas - Delirium Tremens - Delirium Nocturnum - Kasteel - Gouden Carolus
  16. 14 de Junho VII Congresso Científico Uniararas 30 GET /photos/80gmf7

    Host: mypictures.com Accept-Language: pt-BR, * Accept: text/html, image/jpeg, */* Documento Cabeçalho da requisição Cervejas Belgas - Delirium Tremens - Delirium Nocturnum - Kasteel - Gouden Carolus
  17. 14 de Junho VII Congresso Científico Uniararas 31 Cervejas Belgas

    - Delirium Tremens - Delirium Nocturnum - Kasteel - Gouden Carolus Hiperlinks para as cervejas Imagem rica das cervejas
  18. 14 de Junho VII Congresso Científico Uniararas 32 POST /cervejas/

    Host: 1001cervejas.com nome=Duvel&pais=Belgica --- Cabeçalho da requisição Multipart
  19. 14 de Junho VII Congresso Científico Uniararas 33 GET /cervejas/duvel

    Host: 1001cervejas.com Accept-Language: pt-BR, * Accept: text/html, image/jpeg, */* Documento Cabeçalho da requisição Duvel – Bélgica Mais da Bélgica: - Delirium Tremens - Delirium Nocturnum - Kasteel - Gouden Carolus HTTP/1.1 201 Created Location: /cervejas/duvel
  20. 14 de Junho VII Congresso Científico Uniararas 35 Negociação de

    Conteúdo • Formato – text/html, video/mpeg, etc... • Idioma – en-US, pt-BR, etc... • Charset – UTF-8, ISO-8859-1 • Encoding – gzip, deflate • Range – bytes • X-Etc... – Qualquer coisa :)
  21. 14 de Junho VII Congresso Científico Uniararas 43 HTTP/1.1 200

    Ok GET /about Proxy Cache na Transferência
  22. 14 de Junho VII Congresso Científico Uniararas 47 O estado

    do cliente não deve ficar no servidor
  23. 14 de Junho VII Congresso Científico Uniararas 48 O estado

    do cliente não deve ficar no servidor (nem em proxy algum)
  24. 14 de Junho VII Congresso Científico Uniararas 49 Exemplos de

    estado do cliente • Autenticação • Operações com múltiplas etapas • Histórico de Navegação
  25. 14 de Junho VII Congresso Científico Uniararas 50 Stateful •

    O servidor sabe se o cliente está logado. • O servidor controla o carrinho de compras. • Uma requisição pode retornar coisas diferentes para clientes diferentes. • O servidor sempre verifica credenciais. • O cliente controla o carrinho de compras. • Uma requisição deve retornar exatamente a mesma coisa para clientes diferentes. Stateless
  26. 14 de Junho VII Congresso Científico Uniararas 51 Stateful •

    O servidor sabe se o cliente está logado. • O servidor controla o carrinho de compras. • Uma requisição pode retornar coisas diferentes para clientes diferentes. • O servidor sempre verifica credenciais. • O cliente controla o carrinho de compras. • Uma requisição deve retornar exatamente a mesma coisa para clientes diferentes. Stateless Local Storage, AJAX, etc... Sessões, Databases, etc...
  27. 14 de Junho VII Congresso Científico Uniararas 52 Stateful •

    O servidor sabe se o cliente está logado. • O servidor controla o carrinho de compras. • Uma requisição pode retornar coisas diferentes para clientes diferentes. • O servidor sempre verifica credenciais. • O cliente controla o carrinho de compras. • Uma requisição deve retornar exatamente a mesma coisa para clientes diferentes. Stateless Local Storage, AJAX, etc... Sessões, Databases, etc... /home /alganet/dashboard
  28. 14 de Junho VII Congresso Científico Uniararas 53 Stateful •

    O servidor sabe se o cliente está logado. • O servidor controla o carrinho de compras. • Uma requisição pode retornar coisas diferentes para clientes diferentes. • O servidor sempre verifica credenciais. • O cliente controla o carrinho de compras. • Uma requisição deve retornar exatamente a mesma coisa para clientes diferentes. Stateless Local Storage, AJAX, etc... Sessões, Databases, etc... /home /alganet/dashboard
  29. 14 de Junho VII Congresso Científico Uniararas 54 Código sob

    demanda <link href=”http://...”> <a href=”mailto://...”> <img src=”http://...”> <script src=”http://...”>
  30. 14 de Junho VII Congresso Científico Uniararas 56 • CSS

    • Javascript Comportamento Apresentação Código sob demanda
  31. 14 de Junho VII Congresso Científico Uniararas 57 • CSS

    • Estilos • Media queries • ... • Javascript Comportamento Apresentação Código sob demanda
  32. 14 de Junho VII Congresso Científico Uniararas 58 • CSS

    • Estilos • Media queries • ... • Javascript • AJAX • Feature Detection • ... Comportamento Apresentação Código sob demanda
  33. 14 de Junho VII Congresso Científico Uniararas 62 Arquitetura Como

    você organiza elementos de software para alcançar certos objetivos.
  34. 14 de Junho VII Congresso Científico Uniararas 63 Arquitetura Como

    você organiza elementos de software para alcançar certos objetivos. Dados, componentes e conectores
  35. 14 de Junho VII Congresso Científico Uniararas 64 Arquitetura Como

    você organiza elementos de software para alcançar certos objetivos. Performance, escalabilidade, simplicidade, extensibilidade Dados, componentes e conectores
  36. 14 de Junho VII Congresso Científico Uniararas 65 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
  37. 14 de Junho VII Congresso Científico Uniararas 66 Hoje você

    viu... • URI: Interface Uniforme • Ausência de estado no protocolo • Cache • Camadas • Hipermídia • Código sob demanda • O que é REST.