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