Passos em Direção à Glória do REST

Alexandre Gaigalas

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

Interface Uniforme

Parte 0: Identificação de Recursos

example.com/about

maps.ex/paris

artists.ex/magritte

Interface Uniforme

Parte 1: Manipulação de Recursos

por Representações

Ceci n'est pas une pipe.

Interface Uniforme

Parte 2: Mensagens Auto-Descritivas

Interface Uniforme

Parte 3: Hipermídia como Motor de Estado

Código Sob Demanda

A única regra opcional do REST

Richardson Maturity Model

  • Termo cunhado por Martin Fowler, não por Leonard Richardson.
  • Leonard Richardson chama o conceito de Hypermedia Maturity Heuristics.

Hypermedia Maturity

example.com/service

example.com/articles

example.com/images

example.com/people

Nível 0

Nível 1

Hypermedia Maturity

example.com/articles

example.com/images

example.com/people

Nível 1

Nível 2

POST,PUT /articles

GET,PATCH /images

POST,GET /people

Hypermedia Maturity

Nível 2

Nível 3

POST,PUT /articles

GET,PATCH /images

POST,GET /people

<a href="..." rel="...">

<xsl:include>

{"_links" : ... }

Fielding

  • Identificação
  • Representação
  • Autodescrição
  • Estado em Hipermídia

Richardson

  • Identificação
  • Métodos Apropriados
  • Controles de Hipermídia

REST em Regras

REST em Passos

Amundsen

RMM Nível 3 Não é Suficiente!

H-Factor

Um modelo para avaliar hipermídia.

Fatores para Links

LE    Link Embedding    Links embutidos no recurso

LO   Link Outbound      Links para navegar

LT    Link Templating    Formulários para navegar

LN   Unsafe Updates    Formulários para alterar estado

LI     Safe Updates         Formulários para impor estado

Fatores para Links

Exemplos com HTML

LE    Link Embedding    <img, <iframe, <script

LO   Link Outbound      <a href

LT    Link Templating    <form method="get"

LN   Unsafe Updates    <form method="post"

LI     Safe Updates         AJAX (PUT, DELETE)

Fatores para Controles

CR    Control Read         Escolher o media type ao ler

CU    Control Update    Escolher o media type ao atualizar

CM   Control Methods  Escolher o método do protocolo

CL    Control Links         Escolher as relações entre links

Fatores para Controles

Exemplos em HTML/XSL

CR    Control Read         <xsl:include accept="text/plain"

CU    Control Update    <form enctype="application/...

CM   Control Methods  <form method="post"

CL    Control Links         <a rel="item"

HTML

CL

 CR    CU    CM

LE    LO    LT    LN    LI

ATOM

CL

 CR    CU    CM

LE    LO    LT    LN    LI

SVG

CL

 CR    CU    CM

LE    LO    LT    LN    LI

JSON

CL

 CR    CU    CM

LE    LO    LT    LN    LI

CL

 CR    CU    CM

LE    LO    LT    LN    LI

CL

 CR    CU    CM

LE    LO    LT    LN    LI

JSON+Siren

CL

 CR    CU    CM

LE    LO    LT    LN    LI

JSON+HAL

CL

 CR    CU    CM

LE    LO    LT    LN    LI

HTML + JS

CL

 CR    CU    CM

LE    LO    LT    LN    LI

Um Problema do HTML+JS

Workarounds for broken implementations (such as those browsers stupid enough to believe that HTML defines HTTP’s method set) should be defined separately, or at least in appendices, with an expectation that the workaround will eventually be obsolete

Roy Fielding, 2008

Revisão

Referências

Passos em Direção à Glória do REST

By alganet

Passos em Direção à Glória do REST

  • 2,518