Skip to content

Mejores Prácticas para APIs REST

Veronica U edited this page Sep 27, 2023 · 1 revision

Nomenclatura para los Endpoints

Al nombrar los recursos, utilizar nombres y NO verbos, además, nombrar el recurso en plural.

Recurso:  Juegos
Endpoint: /Juegos
POST —----- Crea un juego nuevo
GET —----- Devuelve una lista de juegos
PUT —----- Actualiza una serie de juegos
y DELETE —------ Borra todos los juegos

/Juegos/123

POST —----- Método No Permitido
GET —----- Devuelve el juego con ID 123
PUT —----- Actualiza el juego con ID 123
y DELETE —------ Borra el juego con ID 123

NO USAR: /getAllGames /createNewGame /deleteAllGames

Las modificaciones que se hagan a los recursos deben hacerse con su verbo HTTP correspondiente: POST, PUT o DELETE. Nunca usar GET.

Usar HATEOAS

HATEOAS o Hypermedia as the Engine of Application State es un diseño que permite incluir el principio de hipervínculos de manera similar a la navegación web, lo que mejor navegación por la API. Este principio asegura que, cada vez que se realiza una petición al servidor y éste devuelva una respuesta, parte de la información que contiene será un liink asociado a los recursos de otros clientes.

Devolver colecciones filtrables, ordenables y paginables

En el filtrado, se debe pasar uno o varios parámetro de consulta únicos. Ejemplo:

GET /cars?color=red              Devuelve una lista de coches rojos
GET /cars?seats<=2              Devuelve una lista de coches con un máximo de 2 plazas

Para la ordenación, se necesita que se pueda ordenar de manera ascendente o descendente varios campos.

GET /cars?sort=-manufacturer,+model

Con esa ruta GET, se devuelven los fabricantes de manera descendente y los modelos de manera ascendente.

Paginación: Se refiere al uso de "offset" para establecer la posición de partida de una colección y "limit" para establecer el número de elementos de la colección a devolver desde el offset.

GET /cars?offset=10&limit=5

En esa ruta GET, se obtiene una lista de carros que se encuentren en las posiciones 10 a 15.

Nombrar o Versionar la API

Se realiza para ofrecer compatibilidad en el versionado de una API.

tienda/api/v1

Hacer uso de los códigos de estado HTTP en las respuestas

Algunas prácticas adicionales

  • Estructurar de manera adecuada el proyecto Se deben separar las capas de la aplicación, algunas de estas son los controladores, servicios, módulos y DTOs. Esto se realiza para facilitar la escalabilidad y el mantenimiento de la aplicación.

  • Hacer uso de decoradores NestJS trae incluidos diversos decoradores como como @Controller, @Module e @Injectable que mejoran la legibilidad y estructuración del código.

  • Validar los datos NestJS trae un módulo llamado class-validator con el que se pueden realizar gran cantidad de validaciones sobre los datos de forma rápida.

  • Usar DTOs Estos permitirán estructurar de manera clara los datos enviados y recibidos desde solicitudes HTTP.

  • Usar Guards Estos sirven para proteger rutas y restringir el acceso a ciertas partes de la API según roles, permisos o cualquier otra lógica que decida el programador o cliente.

  • Usar Logging El framework posee un módulo llamado @nestjs/common con el que se puede registrar información útil sobre las solicitudes y los errores.

Clone this wiki locally