Crea uma API RESTful con Node.js, Express.js y Mongoose
Una API RESTful es un conjunto de herramientas, rutinas y protocolos que se utilizan para crear aplicaciones que exponen servicios a otras aplicaciones, permitiendo así que diferentes sistemas intercambien datos y se comuniquen de forma estandarizada y organizada.
¿Qué es Node.js?
Node.js es una plataforma para desarrollar aplicaciones basadas en JavaScript. Se basa en una arquitectura de eventos que es asincrónica, lo que la hace más eficiente para manejar acciones en tiempo real.
¿Qué es Express.js?
Express.js es un framework rápido y uno de los más utilizados con Node.js. Facilitando el desarrollo de aplicaciones back-end e incluso en conjunto con aplicaciones full-stack.
Express.js proporciona una serie de funcionalidades y recursos para la creación de rutas, manejo de respuestas y solicitudes, manejo de errores, entre otros.
¿Qué es Mongoose?
Mongoose es una biblioteca de modelado de datos u ODM para MongoDB y Node.js. Gestiona la relación entre datos y le permite crear esquemas y modelos para los datos de su aplicación y realizar operaciones CRUD (creación, lectura, actualización y eliminación) de una manera muy fácil e intuitiva.
En este artículo aprenderemos los primeros pasos para crear una API RESTful usando Node.js, Express.js y Mongoose. Primero instalaremos y configuraremos el entorno de desarrollo, luego crearemos las rutas y modelos para nuestra aplicación.
Creando el proyecto
Para comenzar, abre tu terminal y escribe el comando:
Después de usar el comando anterior, te pedirá información sobre el proyecto, como su nombre, versión y descripción. Si es necesario, puedes completar los campos o simplemente presionar Enter para que se utilicen los valores predeterminados. Cuando termines, se creará un archivo package.json en la carpeta del proyecto con la información proporcionada.
Al finalizar el proceso aparecerá en tu terminal lo siguiente:
Una vez completado este paso, instalaremos las dependencias del proyecto.
Para hacer esto, use el comando:
para instalar Express.js y Mongoose.
Después de la instalación, tendrás el siguiente mensaje en tu terminal:
Este comando también creará una carpeta node_modules con los módulos instalados y también agregará las dependencias al archivo package.json. Se parece a esto:
Creando el servidor
Con el proyecto ya creado y las dependencias necesarias instaladas, creemos el archivo principal para nuestra aplicación. Llamémoslo server.js. Después de crear el archivo, importaremos Express.js y Mongoose y configuraremos el servidor.
Al comienzo del archivo, escribe el siguiente código:
El código anterior importará Express.js y Mongoose, también creará una instancia de Express llamada app. También se definió una variable de puerto con el número de puerto en el que se ejecutará el servidor.
El siguiente paso será configurar Mongoose para conectarse a la base de datos. Para ello añadiremos el siguiente código justo debajo del anterior:
El código anterior utilizará la función de connect de Mongoose para conectarse a la base de datos. En el primer parámetro de la función pasaremos la URL de conexión de MongoDB, en el segundo parámetro pasaremos algunas opciones para configurar la conexión.
A continuación, crearemos una variable db que representará la conexión de la base de datos. Usamos el método on para registrar un "escucha" para eventos de error y el método once para registrar un "escucha" de eventos para el caso de éxito. Si la conexión es exitosa, aparecerá el mensaje "¡Conexión establecida exitosamente!" en tu terminal.
Nuestro siguiente paso será configurar Express.js para que pueda recibir solicitudes HTTP y devolver respuestas. Debajo del código anterior, agregue el siguiente código:
El código anterior habilitará el middleware de soporte JSON de Express.js. Esto permitirá que el servidor reciba y envíe datos en formato JSON. Luego se creó una ruta GET para la raíz de la aplicación, esta ruta devolverá el mensaje “¡API funcionando correctamente!”. Y al final, utilizamos el método de escucha Express.js para que el servidor se inicie en el puerto especificado.
Después de guardar el archivo server.js, ejecute el comando en tu terminal, para iniciar el servidor:
Si todo está configurado correctamente, recibirás un mensaje de respuesta: “El servidor se inició en el puerto 3000” en su terminal, como se muestra a continuación.
Probando la API
Para probar si la API funciona correctamente, usaremos Postman. En un breve resumen, Postman es una herramienta importante que nos ayuda a crear, consumir, probar, documentar y compartir API. Además, Postman permite a los usuarios guardar y recuperar respuestas detalladas a sus solicitudes HTTP y HTTP.
Para comprobar si todo funciona correctamente, abriremos Postman y crearemos una nueva solicitud GET para la URL http://localhost:3000 y haz clic en "Enviar". Si todo funciona correctamente, recibirás la respuesta "¡La API funciona correctamente!".
Luciría así:
Creando los modelos
Una vez que el servidor esté configurado y en ejecución, crearemos modelos para los datos de nuestra aplicación. Las plantillas son esquemas que definen el formato de los documentos que se almacenarán en la base de datos.
Crearemos una plantilla para una colección de productos. En la carpeta del proyecto, crea un nuevo archivo llamado product.js y agrega el siguiente código:
En el código mostrado, se creó un esquema llamado productSchema utilizando el construtor Schema de Mongoose. Se definieron los campos name, price y description como strings y el campo creadetAt como data y colocamos que los campos name y price sean obligatorios. Enseguida creamos un modelo llamado Product utilizando el método model de Mongoose y usando Schema como parámetro. Por último, exportamos el modelo para que sea utilizado en otros archivos.
Creando las rutas
Después de haber creado el modelo, crearemos nuestras rutas API. Las rutas son los endpoints API que permiten el acceso a los recursos que tiene la aplicación. Como se mencionó anteriormente, crearemos rutas para operaciones CRUD (Create, Read, Update e Delete) de productos.
Para crear rutas, agregaremos el siguiente código al final del archivo server.js:
La primera ruta será enumerar todos los productos:
- GET/products:
La segunda ruta será mostrar un producto específico:
- GET/products/:id:
Nuestra próxima ruta será crear un nuevo producto:
- POST/products:
El próximo será actualizar un producto existente:
- PUT/products/:id:
Y por último, tendremos la ruta para eliminar un producto:
- DELETE/products/:id:
En el código anterior, hemos creado 5 rutas para la colección de productos. Cada ruta utiliza los métodos propios de Mongoose para realizar operaciones CRUD. Por ejemplo, la ruta GET/products utiliza el método find, mientras que GET/products/:id utiliza el método findById. La POST/products utiliza el método save para crear un nuevo producto y en la base de datos y así cada ruta tendrá su método específico para realizar cambios en la base de datos.
Probando las rutas
Ahora que se crearon las rutas, volveremos a Postman para probarlas. En Postman, crea una nueva solicitud POST para la URL http://localhost:3000/products y añade un cuerpo JSON con los datos referentes al producto. Por ejemplo:
Haga clic en "Enviar" y verifique si el producto se ha agregado correctamente a su base de datos. Luego puede crear una nueva solicitud GET para la URL http://localhost:3000/products para poder enumerar todos los productos. En vista de la solicitud de adición de producto realizada anteriormente, verifique si su producto creado anteriormente está en la lista.
También puede probar otras rutas existentes de la misma manera, si desea actualizar un producto, crea un endpoint PUT para la URL http://localhost:3000/products/<id del producto> y agrega un cuerpo JSON con los datos que deseas actualizar.
Conclusión
En este artículo, aprendimos los conceptos básicos de la creación de una API RESTful utilizando Node.js. Express.js y Mongoose. También instalamos y configuramos el entorno de desarrollo, creamos el servidor, rutas y modelos de aplicaciones, probando los endpoints con Postman.
Algunas sugerencias para que puedas ampliar tu API son:
- Agrega validación de datos y mejor manejo de errores;
- Usar MongoDB Atlas o un servicio en la nube en lugar de usar una base de datos local;
- Agrega autorización y autenticación para proteger mejor sus rutas;
- Crea más modelos y más rutas para una aplicación más completa;
- Estructurar mejor la base de datos con filtrado y paginación para evitar ralentizaciones por cargar grandes cantidades de datos a la vez.
Próximamente traeré nuevos artículos hablando sobre MongoDB y sus aplicaciones, así como artículos sobre bases de datos SQL y temas relacionados con el back-end, así como aplicaciones full-stack.
Listopro Community da la bienvenida a todas las razas, etnias, nacionalidades, credos, géneros, orientaciones, puntos de vista e ideologías, siempre y cuando promuevan la diversidad, la equidad, la inclusión y el crecimiento profesional de los profesionales en tecnología.