{
title : ‘

HATEOAS

’,

description : ‘Arquitetura REST 100% aderente’,

author : ‘Evandro Venancio’,
email: ‘evandro.ve...
REST
REpresentational

State

Transfer

(Transferência de Estado Representativo)
O que é estado?
> Preciso saber onde estou
> Preciso saber para onde posso
ir
> Preciso apresentar o meu
crachá para onde ...
Proibida a utilização de rescrita
de URL para manter o estado.
Por favor, não insista.

URL
REWRITE

Uso sim, e daí?
Mas quem escreve
serviços RESTFul de
verdade???
Você já leu a tese
de doutorado do
Dr. Roy Fielding?
Observe:
“A REST (Transferência do Estado
Representativo) é pretendida como uma
imagem do design da aplicação se
comportar...
Quatro Princípios
Protocolo
Cliente/Servidor
sem Estado

Sintaxe
universal para
identificar os
recursos

Conjunto de
opera...
Proposta HATEOAS
Leonard Richardson

2008

The Maturity Heuristic
Uso de
Hipermídias

Conjunto de
operações bem
definidas
Sintaxe
universal para
identificar os
recursos
Protocolo
Cliente/S...
Protocolo
Cliente/Servidor sem
Estado

Sintaxe universal para
identificar os recursos

Conjunto de operações
bem definidas...
Protocolo
Cliente/Servidor sem
Estado

Sintaxe universal para
identificar os recursos

Conjunto de operações
bem definidas...
Protocolo
Cliente/Servidor sem
Estado

Sintaxe universal para
identificar os recursos

Conjunto de operações
bem definidas...
Protocolo
Cliente/Servidor sem
Estado

Sintaxe universal para
identificar os recursos

Conjunto de operações
bem definidas...
Protocolo
Cliente/Servidor sem
Estado

Sintaxe universal para
identificar os recursos

Conjunto de operações
bem definidas...
Protocolo
Cliente/Servidor sem
Estado

Sintaxe universal para
identificar os recursos

Conjunto de operações
bem definidas...
Protocolo
Cliente/Servidor sem
Estado

Sintaxe universal para
identificar os recursos

Conjunto de operações
bem definidas...
HATEOAS
Frameworks
&
HAL
THE END
http://pt.wikipedia.org/wiki/REST
http://martinfowler.com/articles/richardsonMaturityModel.html
http://www.crummy....
Próximos SlideShares
Carregando em…5
×

HATEOAS - Arquitetura REST 100% aderente

2.669 visualizações

Publicada em

Apresentação de 15 minutos que demonstra que, para estar 100% compliance com a arquitetura REST, devemos utilizar hipermídias para controlar o estado.

Publicada em: Tecnologia
0 comentários
7 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
2.669
No SlideShare
0
A partir de incorporações
0
Número de incorporações
914
Ações
Compartilhamentos
0
Downloads
21
Comentários
0
Gostaram
7
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

HATEOAS - Arquitetura REST 100% aderente

  1. 1. { title : ‘ HATEOAS ’, description : ‘Arquitetura REST 100% aderente’, author : ‘Evandro Venancio’, email: ‘evandro.venancio@gmail.com’, twitter : ‘@evenancio’, version : ‘1.0.0’, date : ‘2013-12-07’ dependencies : { skills : [ ‘conhecimentos em desenvolvimento web’, ‘conhecimentos básico em REST’ } }
  2. 2. REST REpresentational State Transfer (Transferência de Estado Representativo)
  3. 3. O que é estado? > Preciso saber onde estou > Preciso saber para onde posso ir > Preciso apresentar o meu crachá para onde posso ir permitir a minha entrada > Eu não quero passar carão, por isto me dê o crachá correto e os lugares onde realmente posso ir com ele
  4. 4. Proibida a utilização de rescrita de URL para manter o estado. Por favor, não insista. URL REWRITE Uso sim, e daí?
  5. 5. Mas quem escreve serviços RESTFul de verdade??? Você já leu a tese de doutorado do Dr. Roy Fielding?
  6. 6. Observe: “A REST (Transferência do Estado Representativo) é pretendida como uma imagem do design da aplicação se comportará: uma rede de websites (um estado virtual), onde o usuário progride com uma aplicação selecionando as ligações (transições do estado), tendo como resultado a página seguinte (que representa o estado seguinte da aplicação) que está sendo transferida ao usuário e apresentada para seu uso.” – Dr. Roy Fielding, pai do REST
  7. 7. Quatro Princípios Protocolo Cliente/Servidor sem Estado Sintaxe universal para identificar os recursos Conjunto de operações bem definidas Uso de Hipermídias HTTP contém todas as informações Múltiplos Endpoints através de rotas GET, POST, DELETE, PUT Proposta HATEOAS 100 % Compliance
  8. 8. Proposta HATEOAS Leonard Richardson 2008 The Maturity Heuristic
  9. 9. Uso de Hipermídias Conjunto de operações bem definidas Sintaxe universal para identificar os recursos Protocolo Cliente/Servidor sem Estado Richardson Maturity Model
  10. 10. Protocolo Cliente/Servidor sem Estado Sintaxe universal para identificar os recursos Conjunto de operações bem definidas Uso de Hipermídias Level 0: Uma única URI e um único HTTP method Não chamem isto de REST em respeito ao criador da arquitetura! POST http://domain.me/aceitamostudoservice HTTP/1.1 200 OK { gravarProdutoRequest : { nome : ‘titulo’, categoria: ‘livro’ } } { id_produto: 1044, nome: ‘titulo’, categoria: ‘livro’, status : ‘INCLUIDO’ } POST http://domain.me/aceitamostudoservice HTTP/1.1 200 OK { alterarClienteRequest : { id_cliente : 123, nome: ‘Ele mesmo’, telefone: ‘11 4444-3333’ } } { id_cliente: 123, nome: ‘Ele mesmo’, telefone: ’11 4444-3333’, status : ‘ALTERADO’ }
  11. 11. Protocolo Cliente/Servidor sem Estado Sintaxe universal para identificar os recursos Conjunto de operações bem definidas Uso de Hipermídias Level 1: Diversas URI e um único HTTP method Já está melhorando... POST http://api.domain.me/produto/gravar HTTP/1.1 200 OK { { nome : ‘titulo’, categoria: ‘livro’ id_produto: 1044, nome: ‘titulo’, categoria: ‘livro’, status : ‘INCLUIDO’ } } POST http://api.domain.me/cliente/123/alterar HTTP/1.1 200 OK { { nome: ‘Ele mesmo’, telefone: ‘11 4444-3333’ id_cliente: 123, nome: ‘Ele mesmo’, telefone: ’11 4444-3333’, status : ‘ALTERADO’ } }
  12. 12. Protocolo Cliente/Servidor sem Estado Sintaxe universal para identificar os recursos Conjunto de operações bem definidas Uso de Hipermídias Level 2: Diversas URI e diversos HTTP methods Este é o cenário mais comum. Estamos quase lá! POST http://api.domain.me/produto HTTP/1.1 200 OK { { nome : ‘titulo’, categoria: ‘livro’ id_produto: 1044, nome: ‘titulo’, categoria: ‘livro’, status : ‘INCLUIDO’ } } PUT http://api.domain.me/cliente/123 HTTP/1.1 200 OK { { nome: ‘Ele mesmo’, telefone: ‘11 4444-3333’ id_cliente: 123, nome: ‘Ele mesmo’, telefone: ’11 4444-3333’, status : ‘ALTERADO’ } }
  13. 13. Protocolo Cliente/Servidor sem Estado Sintaxe universal para identificar os recursos Conjunto de operações bem definidas Uso de Hipermídias Level 3: HATEOAS Hypermedia As The Engine Of Application State > Estamos falando de onde você pode ir com o seu crachá – estado futuro da aplicação > Estamos falando de definição de fronteiras e navegação orientada > Estamos falando de fazer tudo isto utilizando Hipermídia
  14. 14. Protocolo Cliente/Servidor sem Estado Sintaxe universal para identificar os recursos Conjunto de operações bem definidas Level 3: HATEOAS Netflix = 100% REST Compliance Uso de Hipermídias
  15. 15. Protocolo Cliente/Servidor sem Estado Sintaxe universal para identificar os recursos Conjunto de operações bem definidas Uso de Hipermídias Level 3: HATEOAS Show! > O cliente sabe para onde pode ir agora > A descoberta dos serviços disponíveis é dinâmica – logo, o Netflix pode alterar a URL de seus serviços sem se preocupar com os seus usuários > Estamos vendo o controle de estado através de hipermídias
  16. 16. Protocolo Cliente/Servidor sem Estado Sintaxe universal para identificar os recursos Conjunto de operações bem definidas Uso de Hipermídias Level 3: HATEOAS Como ficaria no nosso caso? POST http://api.domain.me/produto { nome : ‘titulo’, categoria: ‘livro’ } HTTP/1.1 200 OK { _links: { details: { href: ‘/produto/1044’, rel: ‘/docs/api/selfProduct’ }, update: { href: ‘/produto/1044/update’, rel: ‘/docs/api/updateproduct’ }, delete: { href: ‘/produto/1044/delete’, rel: ‘/docs/api/deleteProduct’ }, addBasket: { href: ‘/basket?productId=1044’, rel: ‘/docs/api/addInBasket’ } }, id_produto: 1044, nome: ‘titulo’, categoria: ‘livro’, status : ‘INCLUIDO’, }
  17. 17. HATEOAS Frameworks & HAL
  18. 18. THE END http://pt.wikipedia.org/wiki/REST http://martinfowler.com/articles/richardsonMaturityModel.html http://www.crummy.com/writing/speaking/2008-QCon/act3.html http://msdn.microsoft.com/en-us/magazine/jj883957.aspx http://www.infoq.com/news/2013/05/spring-hateoas-rest http://stateless.co/hal_specification.html Evandro Venancio evandro.venancio@gmail.com @evenancio

×