Objetivo:: Crearemos un crud sencillo con ayuda del framework Express de Node js 😃
Repaso: Un CRUD se refiere a las posibles acciones que podemos realizar en una aplicación; en este caso las acciones que podemos definir son las siguientes:
- C: Create --> Post
- R: Read --> Get
- U: Update --> Put/ Patch
- D: Delete --> Delete
Con esta información en mente empezaremos a crear un crud relacionado a el manejo de productos de una tienda :3
Pasos:
Teniendo nuestro proyecto base, lanzaremos el siguiente comando que nos permite instalar las dependencias necesarias para tener express en nuestro proyecto:
npm install express
Importamos express en nuestro archivo index.js
const express = require('express');
Creamos una variable que nos permita instanciar express y creamos una variable que nos permita definir el puerto tambien.
constapp = express();
const port = 3000;
Este es un paso muy importante porque necesitamos configurar el middle de express para ser capaces de interpretar los datos que viene en el body de cada petición. Esta linea de codigo se debe colocar antes de empezar a definir rutas, porque de lo contrario los valores del body de las peticiones quedaran marcadas como undefined.
app.use(express.json());
Empezamos a definir las rutas y metodos con los verbos que proporcionamos en el repaso de este tutorial. En este caso usaremos Get ya que queremos enviar info a renderizar en nuestra pagina cuando se coloque la ruta por /products. (este el caso para obtener productos).
app.get('/products', (req, res) => {
res.json([{
name: 'Product 1',
price: 1000
},
{
name: 'Product 2',
price: 2000
}]);
});
Aquí agregaremos un Post el cual nos permitira crear productos. Adicionalmente agregamos una validación en caso de que el usuario no envie datos.
app.post('/products', (req, res) => {
const { name, price } = req.body;
if ( !name || !price ) {
return res.status(400).json({ mensaje: 'Faltan datos: nombre y precio son requeridos' });
}
const newProduct = {
id: contador++,
name,
price
};
res.status(201).json({
message: 'Producto creado exitosamente',
product: newProduct
});
});
Nota Super Importante: Si queremos probar este endpoint en nuestro local, basta con correr en tu terminal el siguiente CURL
curl -X POST http://localhost:3000/products\
-H"Content-Type: application/json" \
-d '{"name": "Laptop", "price": 1500}'
Ahora definiremos un Put que nos permite actualizar los productos.
app.put('/products/:id', (req, res) => {
const id = req.params.id;
const { name, price } = req.body;
const product = products.find(p => p.id === parseInt(id));if (!product ) {
return res.status(404).json({ mensaje: 'Producto no encontrado' });
}
if (name) product.name = name;if (price) product.price = price;
res.status(200).json({
message: 'Producto actualizado exitosamente',
product
});
});
Finalmente definimos el delete para borrar productos
app.delete('/products/:id', (req, res) => {
const id = req.params.id;
const index = products.findIndex(p => p.id === parseInt(id));// Verificar si el producto existeif (index === -1) {
return res.status(404).json({ mensaje: 'Producto no encontrado' });
}
productos.splice(index, 1);
res.status(200).json({
message: 'Producto eliminado',
product
});
});
Después de definir las rutas, agregamos esta linea de código que nos permite arrancar el servidor Express y hace que podamos escuchar en el puerto especificado.
app.listen(port, () => {
console.log(`este es el puerto: ${port}`);
});
Asi tendremos una API y nuestro primer servidor de Express. 😃