Share
Embed
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
Transcript
70 slides
-
14 de Junho VII Congresso Científico Uniararas 1 REST: Faça
o Serviço Direito 3.0 -
14 de Junho VII Congresso Científico Uniararas 2 Alexandre Gomes
Gaigalas http://about.me/alganet Augusto Pascutti http://about.me/augustohp -
14 de Junho VII Congresso Científico Uniararas 4 Saiba mais
sobre REST. Links são referências -
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. -
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 -
14 de Junho VII Congresso Científico Uniararas 11 Hipermídia Links
Imagens Aparência -
14 de Junho VII Congresso Científico Uniararas 12 Hipermídia Referências
Referências Referências -
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. -
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. -
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. -
14 de Junho VII Congresso Científico Uniararas 17 URIs apontam
pra conceitos idéias -
14 de Junho VII Congresso Científico Uniararas 18 URIs apontam
pra conceitos coisas idéias -
14 de Junho VII Congresso Científico Uniararas 19 URIs apontam
pra conceitos coisas idéias pessoas -
14 de Junho VII Congresso Científico Uniararas 20 URIs apontam
pra conceitos coisas idéias pessoas lugares -
14 de Junho VII Congresso Científico Uniararas 21 URIs apontam
pra conceitos coisas idéias pessoas lugares eventos -
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] -
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”:”...”}] } -
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) -
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 -
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 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 -
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 -
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 -
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 -
14 de Junho VII Congresso Científico Uniararas 32 POST /cervejas/
Host: 1001cervejas.com nome=Duvel&pais=Belgica --- Cabeçalho da requisição Multipart -
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 -
14 de Junho VII Congresso Científico Uniararas 34 Cada formato
é uma representação diferente -
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 :) -
14 de Junho VII Congresso Científico Uniararas 36 Servidor Clientes
Trabalho! Arquitetura Cliente-Servidor -
14 de Junho VII Congresso Científico Uniararas 38 Servidor Clientes
Cache Cache do Cliente -
14 de Junho VII Congresso Científico Uniararas 39 Servidor Clientes
Proxy Cache Cache na Transferência -
14 de Junho VII Congresso Científico Uniararas 40 Cache é
vital para REST -
14 de Junho VII Congresso Científico Uniararas 41 HTTP/1.1 200
Ok GET /about Sem cache -
14 de Junho VII Congresso Científico Uniararas 42 (from cache)
GET /about Cache local (no cliente) -
14 de Junho VII Congresso Científico Uniararas 43 HTTP/1.1 200
Ok GET /about Proxy Cache na Transferência -
14 de Junho VII Congresso Científico Uniararas 44 Servidor Clientes
Arquitetura em Camadas Proxies -
14 de Junho VII Congresso Científico Uniararas 45 Arquitetura em
Camadas Cache Auth Estatísticas -
14 de Junho VII Congresso Científico Uniararas 46 Arquitetura em
Camadas Cache Auth Estatísticas -
14 de Junho VII Congresso Científico Uniararas 47 O estado
do cliente não deve ficar no servidor -
14 de Junho VII Congresso Científico Uniararas 48 O estado
do cliente não deve ficar no servidor (nem em proxy algum) -
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 -
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 -
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... -
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 -
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 -
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://...”> -
14 de Junho VII Congresso Científico Uniararas 55 • CSS
• Javascript Código sob demanda -
14 de Junho VII Congresso Científico Uniararas 56 • CSS
• Javascript Comportamento Apresentação Código sob demanda -
14 de Junho VII Congresso Científico Uniararas 57 • CSS
• Estilos • Media queries • ... • Javascript Comportamento Apresentação Código sob demanda -
14 de Junho VII Congresso Científico Uniararas 58 • CSS
• Estilos • Media queries • ... • Javascript • AJAX • Feature Detection • ... Comportamento Apresentação Código sob demanda -
14 de Junho VII Congresso Científico Uniararas 59 Desktop Mobile
Responsivo é RESTful -
14 de Junho VII Congresso Científico Uniararas 60 REST não
é apenas para APIs. -
14 de Junho VII Congresso Científico Uniararas 62 Arquitetura Como
você organiza elementos de software para alcançar certos objetivos. -
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 -
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 -
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 -
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.