Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

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

63c59020e0d7efaef816653c853ecc05?s=128

Alexandre Gaigalas

April 25, 2015
Tweet

More Decks by Alexandre Gaigalas

Other Decks in Technology

Transcript

  1. Passos em Direção à Passos em Direção à Glória do

    REST Glória do REST Alexandre Gaigalas
  2. 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
  3. Interface Uniforme Interface Uniforme Parte 0: Identificação de Recursos example.com/about

    maps.ex/paris artists.ex/magritte
  4. Interface Uniforme Interface Uniforme Parte 1: Manipulação de Recursos por

    Representações Ceci n'est pas une pipe.
  5. None
  6. Interface Uniforme Interface Uniforme Parte 2: Mensagens Auto-Descritivas

  7. Interface Uniforme Interface Uniforme Parte 3: Hipermídia como Motor de

    Estado
  8. Código Sob Demanda Código Sob Demanda A única regra opcional

    do REST
  9. 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.
  10. Hypermedia Maturity Hypermedia Maturity example.com/service example.com/articles example.com/images example.com/people Nível 0

    Nível 1
  11. 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
  12. Hypermedia Maturity Hypermedia Maturity Nível 2 Nível 3 POST,PUT /articles

    GET,PATCH /images POST,GET /people <a href="..." rel="..."> <xsl:include> {"_links" : ... }
  13. 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!
  14. H-Factor H-Factor Um modelo para avaliar hipermídia.

  15. 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
  16. Fatores para Links 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)
  17. 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
  18. Fatores para Controles 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"
  19. 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
  20. 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
  21. 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
  22. Revisão Revisão

  23. 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