Níveis de Maturidade de Richardson

Postador por : at

Categoria : rest_api


Níveis de Maturidade de Richardson

Neste post vou falar sobre os níveis de maturidade do REST uma dúvida muito comum entre os desenvolvedores de APIs.

O que é RestFull e o que é REST?

Qual é o correto?.

De acordo com o modelo de maturidade de Richardson: RestFull é o estado mais alto do REST.

Na QCon de 2008 Leonard Richardson definiu os quatro níveis de maturidade do REST, de acordo com esse modelo sua API pode ser REST mas não necessariamente ser RestFull.

Glória do Rest

Já se ela for RestFull então ela também é automaticamente REST. Para que a sua API seja RestFull ela precisa atender no mínimo os quatro níveis de maturidade teorizado por Leonard Richardson.

Obviamente hoje eles passaram a ser denominados de Níveis de Maturidade de Richardson

Nível 0:

No nível zero nós temos o que ele chama de pântano de XML.

Imagine que você tem uma oficina e tem uma API REST responsável por gravar clientes, gravar peças, gravar pedidos, gravar os chamados, gravar as ordens de serviços e está tudo amontoado em um único endpoint que lhe permite gerir todos os aspectos da sua empresa. Esse seria o primeiro nível.

A única coisa que nos permite caracterizar o como o resto é que ele usa o HTTP para trafegar JSON ou XML.

Nível 1:

A prróxima camada nós temos o nível 1. Nesse ponto as informações já estão organizadas por recursos. Voltando ao exemplo da oficina agora já existe um endpoint para gravar clientes, um endpoint para gravar fornecedor, um endpoint para abrir as ordens de serviço outro um endpoint para gerir equipamentos e por aí vai.

As coisas já estão um pouco mais organizadas mas ainda não existe uma preocupação com usar os verbos adequados a cada situação.

Durante sua carreira certamente você verá muitas aplicações que ainda estão nesse nível é realmente bastante comum que a API inteira só use GET e o POST. Basicamente tudo que for leitura usam o GET e tudo que for gravação atualização e até mesmo deleção usam o POST.

Nesse nível não existe uma preocupação genuína com os verbos.

Nível 2:

No nível 2 temos os verbos HTTP como o GET, POST, PUT, DELETE

E passam a ser usados além de separar a informação por recursos.

Entenda mais sobre esses métodos nesta publicação: Entendendo os Principais Verbos HTTP

Nível 3:

Por fim temos o nível 3 que é o uso de HYPERMIDEA ou HATEOAS essa é uma sigla meio complicada de se pronunciar mas é muito importante conhecer.

Veja mais em : O que é HATEOAS?

Imagine o seguinte quando eu entro na Wikipédia e ela me fornece o link para as próximas etapas por exemplo estou pesquisando sobre REST e lá tem os links em azul para observações relacionados como por exemplo JSON. E esse link me permite abrir uma nova página e ler um pouco mais a respeito.

Imagine a sua API fazendo a mesma coisa. Por exemplo eu acesso uma listagem de pessoas e cada pessoa da lista tem um link que me permite acessar as informações da pessoa específica, e no recurso pessoa eu tenho os links para as operações que eu posso realizar um recurso de pessoas, por exemplo ele me retorna o link que eu posso usar para deletar, para fazer um upgrade, para cadastrar o novo, para listar etc.

Esse é o último Nível de Maturidade de Richardsou.

A partir do nível 3 é chamado de A GLÓRIA DO REST.

Então, são nível 0, 1, 2 e RestFull?

Bom não é exatamente isso.

Claro que o ideal é que você chegue até o hipertexto se você não tiver tudo isso não for orientado ao hipertexto a sua API ai não é RestFull, você não pode chamar de RestFull. Tem alguma coisa faltando.

Se você quiser se aprofundar e aprender tudo sobre os Níveis de Maturidade de Richardson eu vou deixar alguns links para que você se aprofunde ainda mais no tema.

Conheça também os Entendedo o Verbos HTTP Menos Utilizados