Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

REST em um Slide 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

Slide 3

Slide 3 text

Interface Uniforme Interface Uniforme Parte 0: Identificação de Recursos example.com/about maps.ex/paris artists.ex/magritte

Slide 4

Slide 4 text

Interface Uniforme Interface Uniforme Parte 1: Manipulação de Recursos por Representações Ceci n'est pas une pipe.

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

Interface Uniforme Interface Uniforme Parte 2: Mensagens Auto-Descritivas

Slide 7

Slide 7 text

Interface Uniforme Interface Uniforme Parte 3: Hipermídia como Motor de Estado

Slide 8

Slide 8 text

Código Sob Demanda Código Sob Demanda A única regra opcional do REST

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

Hypermedia Maturity Hypermedia Maturity example.com/service example.com/articles example.com/images example.com/people Nível 0 Nível 1

Slide 11

Slide 11 text

Hypermedia Maturity 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

Slide 12

Slide 12 text

Hypermedia Maturity Hypermedia Maturity Nível 2 Nível 3 POST,PUT /articles GET,PATCH /images POST,GET /people {"_links" : ... }

Slide 13

Slide 13 text

Fielding Fielding Identificação Representação Autodescrição Estado em Hipermídia Richardson Richardson Amundsen Amundsen Identificação Métodos Apropriados Controles de Hipermídia REST em Regras REST em Passos RMM Nível 3 Não é Suficiente!

Slide 14

Slide 14 text

H-Factor H-Factor Um modelo para avaliar hipermídia.

Slide 15

Slide 15 text

Fatores para Links 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

Slide 16

Slide 16 text

Fatores para Links Fatores para Links Exemplos com HTML LE Link Embedding

Slide 17

Slide 17 text

Fatores para Controles 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

Slide 18

Slide 18 text

Fatores para Controles Fatores para Controles Exemplos em HTML/XSL CR Control Read

Slide 19

Slide 19 text

HTML HTML CL CR CU CM LE LO LT LN LI ATOM ATOM CL CR CU CM LE LO LT LN LI SVG SVG CL CR CU CM LE LO LT LN LI JSON 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

Slide 20

Slide 20 text

JSON+Siren JSON+Siren CL CR CU CM LE LO LT LN LI JSON+HAL JSON+HAL CL CR CU CM LE LO LT LN LI HTML + JS HTML + JS CL CR CU CM LE LO LT LN LI

Slide 21

Slide 21 text

O Problema do HTML+JS O 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

Slide 22

Slide 22 text

Revisão Revisão

Slide 23

Slide 23 text

Referências Referências http://amundsen.com/hypermedia/hfactor http://github.com/kevinswiber/siren http://stateless.co/hal_specification.html https://www.ics.uci.edu/~fielding/pubs/dissertation/rest_ arch_style.htm http://www.crummy.com/writing/speaking/2008- QCon/act3.html