REST - Níveis de maturidade de Richardson
Hoje vou apresentar os conceitos sobre os níveis de maturidade de Richardson para as API REST. |
O REST (REpresentational State Transfer) é um estilo de arquitetura popular para projetar serviços da web para buscar ou alterar dados remotos. APIs em conformidade com a estrutura REST são consideradas mais maduras porque oferecem facilidade, flexibilidade e interoperabilidade.
O Modelo de Maturidade Richardson é um modelo de maturidade sugerido em 2008 por Leonard Richardson que classifica APIs da Web com base em sua aderência e conformidade com cada um dos quatro níveis do modelo.
A maturidade de um serviço é baseada em três fatores neste modelo: URI, Métodos HTTP e HATEOAS (Hipermídia). Se um serviço emprega essas tecnologias, ele é considerado mais maduro. Este modelo cobre apenas o estilo de arquitetura da API, não a modelagem de dados ou outros fatores de design.
A figura abaixo mostra o Modelo de Maturidade de Richardson:
A figura mostra que o Modelo de Maturidade de Richardson possui 4 níveis de maturidade a partir do menor para o maior.
Acima do nível 3 temos o que é chamado a Glória do REST. Um exemplo disso seria usar o Swagger para documentar a sua API após ter implementando o HATEOAS; outro recurso a mais seria implementar o limite de envio de requisições por assinatura.
A seguir veremos exemplos de serviços em cada nível de maturidade
Muitos serviços online pertencem ao Nível 0 ou 1, como o Google Search Service (agora obsoleto) e sites baseados em Flash. No entanto, eles estão lentamente sendo eliminados.
Se você estiver projetando um serviço monolítico que executa apenas uma função principal, provavelmente uma API de nível 0 seria suficiente, pois não há necessidade de vários URIs.
O nível 0 é adequado para um serviço de propósito de curto prazo que não deve ser estendido ou atualizado. Pense em um site de declaração de resultados de exame como um exemplo. Seu uso é restrito a alguns dias quando ainda houver resultados. Depois disso, ele se tornaria inativo e irrelevante. O serviço da web executa apenas uma função: ele retorna o estado de aprovação / reprovação de um aluno individual. Se alguns recursos forem acessados, o Nível 1 pode ser empregado.
Assinaturas
populares baseadas em nuvem, como serviços móveis, streaming de conteúdo da
web(NETFLIX) e produtos de automação de escritório, são essencialmente
projetados com APIs em conformidade com os Níveis 2 e 3 do modelo.
Os aplicativos escolhem o Nível 2 ou 3 devido a alguns fatores adicionais : (1)
Precisam trabalhar mesmo com largura de banda limitada e recursos de computação
(2) Confiar no cache para maior desempenho (3) Possuem Operações sem estado
Existe outro modelo chamado Amundsen Maturity Model, que classifica APIs com base em sua abstração de modelo de dados. Em níveis mais altos deste modelo, a API é mais desacoplada dos modelos internos ou detalhes de implementação mas isso é assunto para outro artigo.
E estamos conversados...
"Eu rogo por eles;
não rogo pelo mundo, mas por aqueles que me deste, porque são teus.
E todas as minhas coisas são tuas, e as tuas coisas são minhas; e neles sou
glorificado."
João 17:9,10
Referências:
ASP .NET Core e EF Core - Configurando o ambiente
ASP .NET Core - Como configurar o AutoMapper
Compreendendo o REST - Macoratti.net
NET - Apresentando os fundamentos do REST
Criando e Consumindo uma Web API em um ...
APIs REST - Dicas básicas e boas práticas - III
Node - Criando uma API REST com Express ...
Xamarin Android - Acessando um serviço REST
Apresentando HATEOAS - Macoratti.net
ASP .NET Core - Implementando HATEOAS