Níveis de maturidade de Richardson

Em 2000, Roy Fielding apresentou o padrão REST, com objetivo de resolver os problemas do protocolo SOAP de alta complexidade de implementação e lentidão na comunicação.

Nem sempre o padrão REST é implementado da forma originalmente desenvolvida pelo seu criador. Afinal, neste conceito, uma API só pode ser considerada REST se de fato implementar um conjunto de regras definidas em seu trabalho. Na prática, muitas vezes é necessária uma abordagem um pouco mais simples.

Anos depois, em 2008, após fazer uma análise em centenas de APIs diferentes, Leonard Richardson notou a falta de padronização nas formas de implementação do modelo REST de empresa para empresa. Assim, ele propôs um modelo de maturidade de categorização de quando uma API poderia ser considerada uma REST. O modelo possui 4 níveis.

Três fatores foram utilizados para julgar se um serviço é maduro ou não, são eles: URI, HTTP Methods e HATEOAS (Hypermedia).

Níveis de maturidade de Richardson

Nível 0 – The Swamp of POX

The Swamp of Pox, também conhecido como Pântano de xml, faz uma referência ao seu significado. Imagine que você possui uma oficina e a API REST é responsável por gravar clientes, peças, pedidos, chamados, ordens de serviços, entre outros. Todas essas informações estão salvas em um único endpoint que permite gerir todas as particularidades da sua empresa. Porém, é possível que fique desorganizado conforme o aumento dos dados. Para solucionar isso dois métodos de HTTP (geralmente POST e GET) são utilizados para todas as ações o nível mais básico de qualquer API, geralmente retrata uma API legada que utiliza o formato xml, o que é muito comum na implementação da arquitetura SOAP e SOA.

Vejamos o exemplo abaixo:

 

A tabela acima é um típico exemplo de má implementação do modelo REST, pois além da má utilização dos verbos HTTP, ainda faz a centralização de todas as operações em um único Endpoint, encaixando perfeitamente como um exemplo de The Swamp of Pox.

Neste nível, o protocolo HTTP é meramente utilizado como um meio de transporte de dados.

Nível 1 – Resources

O nível 1 é conhecido como Resources e leva em consideração a utilização eficiente dos Endpoints tendo cada ação um endpoint próprio. Esse é o primeiro passo para a glória do REST na RMM (Richardson Maturity Model), nesse nível a utilização correta dos métodos HTTP ainda não é realizada. Confira o exemplo:

O recurso pode ser entendido como uma entidade de negócio ou um substantivo da aplicação.

Nível 2 – HTTP Verbs

HTTP Verbs é o segundo nível de maturidade e leva em consideração a utilização eficiente dos endpoints (nível 1) e dos verbos HTTP (nível 2). É importante também considerar que esse nível leva em consideração a ótima utilização dos 9 verbos HTTP e também o retorno correto dos status codes de cada endpoint após cada operação.
Confira o exemplo atualizado do nível 2:

Nível 3 – Hypermedia Controls

O último nível faz uma introdução a um assunto bem conhecido na área, referido pela sigla HATEOAS (Hypertext As The Engine Of Application State). A implementação deste nível fornece aos seus clientes links que indicarão como poderá ser feita a navegação entre seus recursos. Quem for consumir a API precisará saber apenas a rota principal e a resposta dessa requisição terá todas as demais rotas possíveis, facilitando o uso da sua aplicação.
Conheça o exemplo atualizado no nível 3:

Após a implementação dos três níveis de maturidade de Richardson é possível chamar uma API de Restful.

Glória do REST

A “Glória do Rest” é todo incremento além do terceiro nível, que visa a melhor utilização da aplicação. Como por exemplo, a utilização de um link de uma Wiki empresarial que retorna os erros de cada página com uma explicação sobre o tema, simplificando assim a utilização da API após ter passado pelos níveis do REST.

Referências

Modelo de maturidade de Richardson – os passos para a glória do REST

Medindo a Maturidade de sua API – Richardson Maturity Model

Alcançando a excelência do REST com um modelo de maturidade eficiente

Post a Comment

* indicates required

O tratamento de dados é feito pela GFT Technologies SE. O comentário ficará visível para todos os usuários e os dados relacionados a ele serão processados com base no seu consentimento expresso ao deixar o comentário. Você tem o direito de retirar seu consentimento a qualquer momento. Para mais informações, veja nossa Política de Privacidade.

Comment Area