Reglas RestFull
A la hora de desarrollar, cada uno de nosotros es diferente y tiene sus propias "maneras" de organizar y entender su trabajo, sin embargo cuántas veces no te ha tocado la difícil tarea consumir una API y las enpoints son muy largas y no dan referencia clara de que nos devuelve como respuesta. Para evitar ese tipo de contratiempos y proporcionar un acceso efectivo a nuestra API, te comparto las reglas preestablecidas y avaladas por los pesos pesados del desarrollo, que deberías tomar como buena práctica desde ya, al definir los enpoints de tu aplicación.
1.- Usa sustantivos no verbos
Cuando definimos nuestros enpoints, siempre cometemos errores a la hora de especificar o declarar nombres. Para la declaración de un enpoint es importante utilizar sustantivos. Con el objetivo de tener una fácil compresión a la hora de interpretar la documentación.
/* Aqui podemos pensar, que este enpoint nos va a obtener los carros o clientes*/
/getCars
/getClients
Como podemos observar, al declarar la ruta del enpoint, estamos colocando un verbo, claro que al tratar de traducirlo o interpretarlo mediante la URL, nos indica que nos va a traer todos los vehículos o clientes dependiendo de la ruta. Esta es la forma incorrecta de declararlo y en muchos casos son errores comunes que cometemos todos (Me incluyo) cuando empezamos a desarrollar.
/* Method GET */
/cars
/clients
2.- Sustantivos en plural
Otro de los problemas comunes es que en las rutas empezamos a combinar singular y plural, a pesar de que hayamos creado los enpoints con sustantivos.
/car/1
/cars
Generalmente definimos un singular para hacer referencia a lo que debemos obtener un carro con su id correspondiente y el plural para obtener todos los vehículos. Pero en esta ocasión todas las rutas a declarar serán en plural los sustantivos
/cars/1
/cars
3.- Define correctamente el tipo de petición a realizar
Es importante dejar muy claro qué tipo de método corresponde a cada enpoint, los 4 más comunes son GET, POST, PUT y DELETE.
GET: Es el método que nos define que se puede obtener datos y el comúnmente usado al obtener datos de una base de datos (SELECT).
POST: Por otro lado este método define la inserción de datos, el ejemplo más claro es cuando la función hace uso de INSERT en la base de datos.
PUT: Erróneamente asimilado con POST, este método define la actualización de datos. (UPDATE en la base de datos).
DELETE: Tal cual su nombre lo indica, define la eliminación de registros (DELETE en la BD)
4.- Códigos de estado
Uno de los errores típicos y comunes al construir una API, suele ser el envío de códigos de estado en la petición. Ejemplo:
Durante una petición se devuelve un código 200, cuando se ejecuta de forma correcta. Sin embargo en este caso el código se devuelve en el cuerpo de la respuesta.
Petición
========
PUT /facturas/123
Respuesta
=========
Status Code 200
Content:
{
success: false,
code: 734,
error: "datos insuficientes"
}
Este es un error común que tiene varios inconvenientes, los dos principales son:
- No es REST ni es estándar.
- El cliente que haga uso de esta API debe conocer la forma particular en la que se devuelven las respuestas y cómo trabajar con los errores de la misma
Debemos estandarizar los errores y códigos de error en nuestra API, ya que el cliente espera respuestas rápidas y eficientes, ocupando la menor cantidad de líneas de código.
5.- Usa versiones
Que nuestra API cuente con un número de versión y mantenerlo a la vista de las peticiones, es una muy buena práctica, ya que nos permite tener control al corregir errores o al hacer actualizaciones en la misma.
https://localhost:8181/v2/clients
Como conclusión, siguiendo estas simples reglas, tendremos nuestras APIS bien definidas y totalmente claras a la hora de liberarlas a nuestro equipo.