Qué es una API Rest y cómo crear un endpoint sencillo con Node.js y Express
En la actualidad, el diseño de API REST se ha convertido en un estándar para el desarrollo de aplicaciones web y servicios en la arquitectura de cliente-servidor. REST, que significa Transferencia de Estado Representacional (Representational State Transfer), es un conjunto de principios arquitectónicos que guían la creación de servicios web eficientes, escalables y fáciles de mantener.
El término "REST" fue acuñado por Roy Fielding en su tesis doctoral en el año 2000. Fielding, uno de los coautores del protocolo HTTP (Hypertext Transfer Protocol), ideó los principios REST para describir cómo los sistemas pueden comunicarse a través de la web de manera eficiente. Estos principios han ganado amplia aceptación en la comunidad de desarrollo de software.
Los métodos HTTP en una API REST definen las acciones que se pueden llevar a cabo sobre los "recursos" que la API expone. En el contexto de una API REST, un "recurso" es una unidad de información o entidad identificable, como un usuario, un producto o cualquier otro conjunto de datos. Cada método HTTP (GET, POST, PUT, DELETE, etc.) se asocia con una operación específica sobre estos recursos. Los métodos principales son:
GET: Recupera información de un recurso específico. Es idempotente, lo que significa que múltiples solicitudes no cambian el estado del servidor.
POST: Crea un nuevo recurso. Se utiliza para enviar datos al servidor para su procesamiento.
PUT: Actualiza un recurso existente o crea uno si no existe. Es idempotente, ya que realizar la misma operación varias veces produce el mismo resultado que hacerlo una vez.
DELETE: Elimina un recurso específico. Al igual que GET, es idempotente.
PATCH: Aplica parcialmente modificaciones a un recurso. Es útil cuando solo se necesitan realizar cambios específicos en lugar de enviar el recurso completo.
OPTIONS: Proporciona información sobre las opciones de comunicación disponibles para el recurso identificado.
Para implementar la API necesitaremos Node.js y el servidor web Express.js
Node.js es un entorno de ejecución de JavaScript del lado del servidor que utiliza el motor V8 de Google Chrome. La singularidad de Node.js radica en su capacidad para ejecutar código JavaScript en el servidor, permitiendo la creación de aplicaciones altamente escalables y orientadas a eventos.
Express.js, por otro lado, es un servidor web para Node.js. Se construye sobre la base de las funciones básicas de Node.js, simplificando la creación de aplicaciones web y APIs REST.
También ayuda que la comunidad es muy activa y el robusto y extenso ecosistema de paquetes de Node.js, a través de NPM, contribuyen a su atractivo y popularidad.
Antes de continuar debes asegurarte de tener el entorno configurado. Concretamente necesitamos que el sistema tenga instalado Node.js y npm. Puedes comprobar si los tienes instalados ejecutando los comandos
Si no tienes instalado Node.js puedes seguir este artículo para instalar NVM (Node Version Manager) y Node.js Y para instalar npm:
El primer paso será crear una carpeta donde residirán los archivos de nuestra aplicación. Puedes usar este comando para crear la carpeta:
Accedemos dentro del directorio
Para inicializar la aplicación podemos ejecutar el comando:
Se iniciará la creación de la aplicación y te preguntará el nombre de la aplicación y otros parámetros. Puedes aceptar los parámetros por defecto pulsando la tecla Enter.
Una vez creada la aplicación verás que se ha creado un archivo llamado package.json
que contiene la información proporcionada, y además describe cómo se ejecutará el proyecto y la lista de dependencias.
Para instalar Express.js, ejecutamos este comando en la terminal:
Si volvemos a abrir el archivo package.json
veremos que se ha añadido la dependencia (la versión puede variar si no se especifica al instalarla).
y también se ha creado un archivo llamado package-lock.json
, un archivo que contiene el registro de las dependencias instaladas.
Creamos un archivo llamado index.js
y pegamos este código:
Primero importamos la dependencia Express.js y se creamos una instancia de la aplicación llamada app.
Utilizamos el middleware express.json() para permitir que la aplicación pueda interpretar datos en formato JSON que se envían en las solicitudes.
Configuramos el puerto en el que el servidor escuchará las solicitudes. Si hay una variable de entorno llamada PORT definida, utilizará ese valor; de lo contrario, usará el puerto 8080 por defecto.
Iniciamos el servidor y empieza a escuchar en el puerto especificado. Cuando el servidor está listo para recibir solicitudes, se imprime en la consola el mensaje 'servidor iniciado'.
Definimos un nuevo enpoint para las solicitudes GET en la ruta '/hola'. Cuando se recibe una solicitud en esta ruta, la aplicación responde con el texto 'mundo'.
Para probar el código implementado, en la línea de comandos ejecutamos:
con el navegador nos podemos dirigir a la url http://localhost:8080/hola y veremos el texto