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

Modelo de Maturidade em APIs RESTful

Modelo de Maturidade em APIs RESTful

Jéssica Félix

November 09, 2019
Tweet

More Decks by Jéssica Félix

Other Decks in Programming

Transcript

  1. Jessica Felix Desenvolvedora back end COMUNIDADES Nerdzão e Community Manager

    Meeting PALESTRAS TDC Floripa e SP, Campus Party Goiás
  2. ASSUNTOS ABORDADOS REST, RESTful e API RESTful INTRODUÇÃO Archtetural Constrains

    e Modelo de Richardson ARQUITETURA Recursos, verbos e controles de hypermidia GLORY OF REST Desejado x realidade NO MUNDO REAL
  3. REST Representational State Transfer Conjunto coordenado de restrições arquiteturais aplicadas

    a componentes, conectores e elementos de um sistema de hipermídia distribuído. RESTful gramatical Capacidade de fazer REST
  4. REST É UM CONJUNTO DE REGRAS E PADRÕES, ENQUANTO RESTFUL

    É A IMPLEMENTAÇÃO DESSAS REGRAS EM API.
  5. RESTful API APPLICATION PROGRAMMING INTERFACE toda a comunicação é feita

    via web O ENDPOINT base url, resource/path e query string METHODS GET,POST, PUT e PATCH, DELETE
  6. REST API HEADER E BODY informações na requisição HTTP STATUS

    CODES 200 (OK), o 201 (created), o 204 (no content), o 404 (not found), o 400 (bad request), e 500 (internal server error). AUTENTICAÇÃO Secret token (padrões Auth e JWT)
  7. Os 6 Princípios do REST Roy Fielding CLIENTE- SERVIDOR Garantir

    que ambas se preocupem basicamente com sua área específica de atuação INTERFACE UNIFORME Identificação e Representação dos recursos, Mensagens auto- descritivas e HATEOAS. SEM ESTADO Cada requisição possui toda informação necessária para que seja inteiramente compreensível.
  8. Os 6 Princípios do REST Roy Fielding ARMAZENAMENTO EM CACHE

    Dados em uma resposta devem ser rotulados como armazenáveis ou não armazenáveis em cache. CAMADAS(LAYERS) Cada layer não pode ver além do layer adjacente e mudanças de um layer não devem impactar nos demais. SOB DEMANDA Possibilidade de serviços responderem como representação de um recurso informação executável pelo cliente.
  9. MODELO DE MATURIDADE DE RICHARDSON Não se usa padrão para

    praticamente nada LEVEL 0 - POX Uso de recursos para modelar e organizar APIs. Definir substantivos LEVEL 1 - RESOURCES Verbos HTTP o mais próximo de como devem ser usados . Aplicar verbos LEVEL 2 -HTTP VERBS Estado atual, relacionamento com outros elementos ou futuros estados LEVEL 3 - HATEOAS
  10. level 0 - POX Os conhecimentos sobre a API se

    perdem se os idealizadores não fizerem mais parte do projeto. Para operações simples se faz necessário uma documentação robusta verb URI operation GET POST POST GET/ POST /getBox/1 /saveBox /updateBox/1 /deleteBox/1 buscar enviar editar apagar
  11. level 1- Resources Não precisamos conhecer as funcionalidades encapsuladas em

    cada método, mas, devemos saber identificar visualmente o que cada recurso representa fazendo menção direta a um substantivo, preferencialmente no plural. verb URI operation GET POST PUT DELETE /getboxes/1 /saveboxes /updateboxes/1 /deleteboxes/1 buscar enviar editar apagar
  12. level 2- HTTP verbs Esse nível apresenta um conjunto de

    verbos que representam operações possíveis sobre um recurso, no primeiro nível definimos os substantivos e nesse nível iremos aplicar os verbos. Os principais verbos HTTP são: GET, PUT, POST, DELETE, HEAD, PATCH, OPTIONS. verb URI operation GET POST PUT DELETE /boxes /boxes/1 /boxes/1 /boxes/1 buscar enviar editar apagar
  13. level 3- HATEOAS HATEOAS (Hypermedia As The Engine Of Application

    State ) basicamente são links e aplicação de semântica usando media-types. O ponto mais importante do hypermedia controls é a maneira que um resource deve ser manipulado é descrito, não tendo necessidade de adivinhações de quais operações estão de fato implementadas. GET /box/1 { "name": "Papelao", "links": [ { "rel": "self", "href": "http://localhost:8080/boxes/1" }, { "rel" : "delete", "href": "http://localhost:8080/boxes/1" ] }
  14. LEITURAS DE APOIO https://www.ics.uci.edu/~fielding/pubs/dissertation /rest_arch_style.htm REPRESENTATIONAL STATE TRANSFER (REST) https://pt.stackoverflow.com/questions/45783/o-

    que-é-rest-e-restful/45787 O QUE É REST E RESTFUL? https://www.infoq.com/br/articles/nivelando-sua- rest-api/ NIVELANDO SUA REST API https://martinfowler.com/articles/richardsonMaturi tyModel.html RICHARDSON MATURITY MODEL