DEV Community

Cover image for Rest e seus níveis de maturidade
William Koller
William Koller

Posted on

Rest e seus níveis de maturidade

O que sabemos sobre Rest:

  • Muitos desenvolvedores "já sabem trabalhar com REST";
  • Representational state of transfer (Transferência Representacional de Estado);
  • surgiu em 2000 por Ray Fielding em uma dissertação de doutorado;
  • Simplicidade;
  • Stateless (sem guardar estado);
  • Cacheável;

REST: Níveis de maturidade (Richardson Maturity Model)

  • Nível 0 - POX:

Nível 0 de maturidade significa que uma determinada aplicação não utilizou os recursos de URI, métodos HTTP e Hypermedia (HATEOAS);

Iremos notar que nesse exemplo modelo mais comum, faz uso apenas de verbos POST e GET:

POST - http://localhost:3005/products/saveProduct
Image description

GET - http://localhost:3005/products/getProduct/628bd53ff6a8e68c40859468

Image description

Logo... nada a ver com REST e muito distante de RESTful.

  • Nível 1 - Recursos:

Nível 1 de maturidade considera a utilização eficiente de URIs. Os recursos são mapeados, porém não empregam com eficiência o uso dos verbos.

Image description

  • Nível 2 - VERBOS HTTP (HTTP VERBS):

Nível 2 de maturidade considera o uso eficiente de URIs e verbos HTTP.

Nesse nível, a API suporta os seguintes verbos HTTP:

– HTTP POST: utilizado para criar registro em banco de dados;

– HTTP GET: utilizado para a leitura de registros em banco de dados;

– HTTP PUT: utilizado para atualizar um determinado registro em banco de dados;

– HTTP PATCH: utilizado para atualizar parte de um determinado registro em banco de dados.

Exemplo:

POST /products
{
 name: "Notebook Samsung Book Np550 Celeron"
 description: "4gb 500gb 15.6 W11 Cinza"
}
Enter fullscreen mode Exit fullscreen mode
HTTP/1.1 201 Created
Location: /products/628bda5a314e825e8965e05a
Enter fullscreen mode Exit fullscreen mode
  • Nível 3 - HATEOAS:

Nível 3 conhecido por Hypermedia as the Engine of Application State, Roy Fielding descreve HATEOAS como uma das premissas necessárias para considerar um API RESTful.

Exemplo:

Image description

Referências:

Código de exemplo: https://github.com/williamkoller/rest-example-with-nestjs

Espero ter ajudado <3;

Top comments (0)