Hipermídia para Serviços

 

Alexandre Gaigalas

Alexandre Gaigalas

  • Apenas mais um rostinho bonito sem conteúdo

 

  • Auto-didata, leitor de RFCs e especificações

 

  • Batedor de código fonte desde a época das tabelas

Agenda

  • REST e Hipermídia: o que são

 

  • A relação entre HTTP e REST

 

  • Mini-Projeto: Catálogo

Hipermídia é informação com controles manipuláveis

C. Alexander, S. Ishikawa, M. Silverstein, M. Jacobson, I. Fiksdahl-King, and S. Angel. A Pattern Language. Oxford University Press, New York, 1977.

A Pattern Language

REST é um estilo de arquitetar software

REST em um Slide

 

 

  • Baixa Curva de Aprendizado
  • Extensibilidade
  • Hipermídia Distribuída
  • Escala da Internet

 

 

  • Cliente-Servidor
  • Stateless
  • Cacheável
  • Camadas
  • Interface Uniforme
  • Código sob Demanda**

Requisitos

Regras

 

 

  • Performance
  • Escalabilidade
  • Simplicidade
  • Manutenibilidade
  • Visibilidade
  • Portabilidade
  • Confiabilidade

Propriedades

Fatores Derivados de Outros Estilos

 

Fatores RESTful

 

 

  • Cliente-Servidor
  • Stateless
  • Cacheável
  • Camadas
  •  
  • Código sob Demanda

Interface Uniforme

}

  • Identificação de Recursos
  • Mensagens auto-descritivas
  • Manipulação de Representações
  • Hipermídia como motor de estado

HTTP

HATEOAS

(Hypermedia as the engine of application state)

Loop de controles de hipermídia + representações

Projeto: Catálogo

Recurso
URI Links
Home /store /categories, /products
Lista de Produtos /products /products/{id}
Um Produto /products/{id} /categories/{id}
Lista de Categorias /categories /categories/{id}
Uma Categoria /categories/{id} /products/{id}

Projeto: Catálogo

{
  "_links": {
    "self":       { "href": "/store" },
    "categories": { "href": "/categories" },
    "products":   { "href": "/products "}
  }
}

Projeto: Catálogo

{
  "_links": {
    "self":   { "href": "/products" },
    "parent": { "href": "/store" }
  },
  "_embedded": {
    "product": [
      {
        "_links": {"self": "/products/123"}, 
        "name": "Shirt", 
        "price": 30.00
      },
      {
        "_links": {"self": "/products/456"}, 
        "name": "Pants", 
        "price": 30.00
      }
    ] 
  }
}

Hora da Demo!

Nós vimos...

  • REST e Hipermídia: o que são

 

  • A relação entre HTTP e REST

 

  • Mini-Projeto: Catálogo

Hipermídia para Serviços

By alganet

Hipermídia para Serviços

  • 953