Las APIs RESTful con Node.js permiten crear aplicaciones web eficientes. Esta guía te muestra cómo hacerlo. Usaremos Node.js, Express.js y más.1 Te enseñará a preparar todo, crear un servidor y conectar con bases de datos. También a diseñar endpoints y hacer operaciones de CRUD.Aprenderás a manejar solicitudes HTTP, validar datos y a testear con Postman. Finalmente, veremos cómo llevar tu API a la nube. Además, recibirás tips sobre buenas prácticas y arquitectura de software para APIs de calidad y fáciles de mantener.
Conceptos Clave
- Entender los principios de la arquitectura REST y las ventajas de las APIs RESTful.
- Configurar un entorno de desarrollo robusto con Node.js, Express.js y otras herramientas.
- Diseñar y desarrollar una API RESTful completa, desde la creación del servidor hasta la implementación de operaciones CRUD.
- Manejar solicitudes HTTP y validar datos con la biblioteca Joi.
- Realizar pruebas exhaustivas con Postman y desplegar la API en la nube.
Introducción a las APIs RESTful
Las APIs RESTful son un tipo específico de API. Siguen reglas de diseño llamadas REST.2 Estas reglas ayudan a crear APIs que son fáciles de usar, escalables y eficientes.
Gracias a REST, las aplicaciones pueden compartir datos. Usan internet y un formato simple llamado JSON.
¿Qué es una API RESTful?
Las APIs RESTful usan el modelo cliente-servidor.2 Esto significa que el cliente envía y recibe información del servidor sin tener que guardar nada. Se usa un formato común como JSON o XML.
Este método de comunicación hace que las aplicaciones sean flexibles y fáciles de escalar.
Principios de arquitectura REST
Los principios básicos de REST son:
- La información de un recurso se comparte de forma sencilla, como con JSON o XML.2
- Hay una clara separación entre la vista que ve el usuario y la lógica de negocio.
- Cada mensaje HTTP tiene todo lo necesario dentro, sin depender del servidor.2
- Se puede usar una memoria cache para almacenar datos temporales y optimizar la respuesta de la API.
- El sistema puede estar organizado en capas para crecer de forma independiente.
- Se pueden enviar mini programas. Así, el servidor puede mejorar las funciones de la aplicación.
Ventajas de las APIs RESTful
Las ventajas de usar APIs RESTful son:
- Son fáciles de entender y utilizar gracias a su diseño sencillo.2
- Permiten que los servidores manejen más usuarios de forma fácil y eficiente.
- Cualquier dispositivo puede usar estas APIs, desde una computadora hasta un teléfono.2
- Su diseño se basa en protocolos web comunes, lo que las hace óptimas en rendimiento.
- Es más fácil cambiar y mejorar la API con el tiempo.
Configuración del entorno de desarrollo
Para empezar a trabajar en nuestra API RESTful con Node.js, es clave preparar bien el entorno de desarrollo.1 Hay pasos importantes a seguir:
- Instalar Node.js: Hay que descargar y poner la última versión LTS de Node.js en la computadora.
- Configurar un editor de código: Es útil usar un programa como Visual Studio Code. Ofrece gran ayuda para el desarrollo de apps Node.js.3
- Inicializar un nuevo proyecto Node.js: Creamos una carpeta para el proyecto y luego usamos
npm init
para hacer el archivopackage.json
. - Instalar dependencias: Ponemos las diferentes bibliotecas y entornos, como Express.js, Mongoose, Joi, con el comando
npm install
.3 - Configurar un sistema de control de versiones: Comenzamos un repositorio Git y creamos
.gitignore
para sacar de seguimiento ciertas carpetas y ficheros. - Configurar un linter: Poner y ajustar ESLint es importante para que todo el código siga un estilo uniforme.1
Creación del servidor con Node.js y Express
Express.js es un marco de desarrollo web sencillo y adaptable para Node.js. Ayuda a hacer el servidor de nuestra API RESTful. Para ponerlo, usa este comando en la terminal:
«`
npm install express
«`
Express nos da varias funciones que hacen más fácil crear webs y APIs en Node.js.4
Instalación de Express
Ya con Express instalado, empezamos a configurar el servidor. Hacemos un archivo `index.js` (o `app.js`) como la entrada de nuestra app y ponemos esto:
«`javascript
const express = require(‘express’);
const app = express();
const port = process.env.PORT || 3000;
«`
Configuración del servidor
Un aspecto clave de Express es el control de rutas. Definimos rutas o endpoints de nuestra API RESTful en archivos aparte, luego los sumamos al principal. Esto ayuda a tener el código ordenado y flexible. Imagina tener un archivo `routes.js` así:
«`javascript
const express = require(‘express’);
const router = express.Router();
«`
Manejo de rutas
Nuestro servidor puede manejar rutas diferentes, como la del inicio o la de «acerca de».4 Esto senta las bases para webs más avanzadas y interactivas.4
Conexión a la base de datos con MongoDB
Vamos a usar MongoDB para guardar los datos de nuestra API. MongoDB es una base de datos NoSQL.1 Para empezar, hay que instalar MongoDB en nuestro equipo.
En sistemas Unix, usa estos comandos:
«`
sudo apt-key adv –keyserver hkp://keyserver.ubuntu.com:80 –recv 0C49F3730359A14518585931BC711F9BA15703C6
echo «deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.4 multiverse» | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list
sudo apt-get update
sudo apt-get install -y mongodb-org
«`
Después de la instalación, inicia MongoDB con `sudo systemctl start mongod`.1
Configuración de Mongoose
Para manejar MongoDB desde Node.js, usaremos Mongoose. Mongoose es un ODM. Ayuda a organizar y acceder a los datos fácilmente.1
Instala Mongoose así:
«`
npm install mongoose
«`
Luego, en un archivo aparte (como `db.js`), configura la conexión con MongoDB:
«`javascript
const mongoose = require(‘mongoose’);
«`
Definición de modelos
Con Mongoose, creamos modelos para manejar los datos de MongoDB. Por ejemplo, para ‘Eventos’ usaríamos un archivo `evento.model.js`.1
APIs RESTful con Node.js: Guía Paso a Paso
Diseño de endpoints
Ahora que nuestro entorno de desarrollo y la base de datos están listos, toca crear los endpoints. Estos son las direcciones URL mediante las que los clientes usarán nuestra API.3 Para una API de eventos, tendremos estos endpoints:
- GET /eventos – Para obtener una lista de eventos
- GET /eventos/{id} – Para ver los detalles de un evento
- POST /eventos – Para agregar un nuevo evento
- PUT /eventos/{id} – Para actualizar un evento
- DELETE /eventos/{id} – Para quitar un evento
Operaciones CRUD
Teniendo ya los endpoints, debemos agregar la lógica de negocio para las operaciones CRUD. Con Sequelize3, podemos manejar la colección de eventos.
Crearemos estas funciones para las operaciones CRUD:
- getEvents() – Sirve para obtener todos los eventos
- getEventById(id) – Muestra los detalles de un evento específico
- createEvent(eventData) – Agrega un evento nuevo a la base de datos
- updateEvent(id, updatedData) – Actualiza la información de un evento
- deleteEvent(id) – Borra un evento de la base de datos
Estas funciones usarán los modelos de Sequelize3 para conectarse con la base de datos. Después, estarán disponibles a través de los endpoints creados.
Manejo de solicitudes HTTP
Las APIs RESTful usan los métodos HTTP conocidos para las tareas sobre los recursos.2 Entre estos métodos están GET, POST, PUT, PATCH y DELETE.2 Al recibir peticiones del cliente, es esencial entender y procesar la información que llega.2 Estos datos pueden estar en la URL, el cuerpo de la solicitud o en los encabezados HTTP.
Métodos HTTP
Cada método HTTP indica una operación distinta en los recursos de la API. Así, su uso es específico:
- GET: Se emplea para buscar recurso(s).
- POST: Sirve para añadir un nuevo recurso.
- PUT: Actualiza por completo un recurso.
- PATCH: Hace una actualización parcial de un recurso.
- DELETE: Utilizado para remover un recurso.
Procesamiento de datos de solicitud
Al responder a solicitudes de la API, debemos procesar los datos con cuidado. Se consideran varios elementos al hacerlo:
- Parámetros en la URL: Importante extraerlos y utilizarlos.1
- Datos en el cuerpo de la solicitud: Es clave procesar la información que llega, comúnmente en formato JSON.2
- Encabezados HTTP: Se deben manejar apropiadamente. Incluyen información crucial como la autenticación.
Entender y tratar bien estos componentes es esencial para lograr un buen funcionamiento CRUD en la API.
Validación de datos con Joi
Vamos a hablar de cómo proteger los datos en nuestra API RESTful usando3 Joi. Joi es una herramienta en JavaScript3 para validar y describir datos. Con Joi, estableceremos reglas para que los datos ingresados respeten ciertos criterios.
Instalación de Joi
Para empezar, necesitamos añadir Joi a nuestro proyecto. Basta con ejecutar este comando en la terminal:
«`
npm install @hapi/joi
«`
Definición de esquemas de validación
Para cada tipo de dato que reciba nuestra API, crearemos un esquema con Joi. Por ejemplo, un esquema para un evento sea así:
«`javascript
const Joi = require(‘@hapi/joi’);
const eventoSchema = Joi.object({
nombre: Joi.string().required(),
descripcion: Joi.string().required(),
fecha: Joi.date().required(),
ubicacion: Joi.string().required()
});
«`
En este caso, dicho esquema verifica que para un evento, el nombre y descripción son necesarios. La fecha tiene que ser válida, y la ubicación es obligatoria.5
Usaremos este modelo de validación en nuestros controladores. Así, nos aseguramos de que los datos que llegan siguen las pautas que hemos establecido.6
Enlaces de origen
- https://juanda.gitbooks.io/webapps/content/api/creacion_de_una_api_con_nodejs.html
- https://elmerdpadilla.wordpress.com/2020/02/29/api-rest-node-js/
- https://ccasta23.medium.com/de-cero-a-api-construyendo-una-api-restful-con-node-express-postgres-sequelize-4dc4477e1b4b
- https://www.configuroweb.com/servidor-http-basico-nodejs/
- https://www.softwareontheroad.com/es/ideal-nodejs-project-structure/
- https://bluuweb.github.io/node/07-jwt/