Un CRUD (Create, Read, Update, Delete) en el contexto de REST (Representational State Transfer) se refiere a las operaciones básicas para gestionar recursos a través de una API RESTful. A continuación, se presenta una guía sobre cómo implementar cada una de estas operaciones utilizando REST.
REST es un estilo arquitectónico para diseñar servicios web que permiten la interacción entre sistemas a través de solicitudes HTTP estándar. Los servicios RESTful son escalables, flexibles y fáciles de mantener.
Operación CRUD | Método HTTP | Descripción |
---|---|---|
Create | POST | Crear un nuevo recurso. |
Read | GET | Obtener uno o varios recursos. |
Update | PUT/PATCH | Actualizar un recurso existente. |
Delete | DELETE | Eliminar un recurso existente. |
Los endpoints en una API RESTful están diseñados para representar recursos específicos. A continuación, se muestran ejemplos de endpoints para gestionar un recurso usuarios
.
POST /api/usuarios
GET /api/usuarios
GET /api/usuarios/{id}
PUT /api/usuarios/{id}
DELETE /api/usuarios/{id}
A continuación, se muestra un ejemplo de cómo implementar un CRUD en REST utilizando Node.js con el framework Express y MongoDB como base de datos NoSQL.
Primero, asegúrate de tener Node.js y MongoDB instalados en tu sistema. Luego, crea un nuevo proyecto e instala las dependencias necesarias:
npm init -y
npm install express mongoose body-parser
// server.js
const express = require('express');
const bodyParser = require('body-parser');
const mongoose = require('mongoose');
const app = express();
const port = process.env.PORT || 3000;
// Middleware
app.use(bodyParser.json());
// Conexión a MongoDB
mongoose.connect('mongodb://localhost:27017/crud_rest', { useNewUrlParser: true, useUnifiedTopology: true })
.then(() => console.log('MongoDB conectado'))
.catch(err => console.log(err));
// Modelo de Usuario
const Usuario = mongoose.model('Usuario', {
nombre: String,
email: String,
edad: Number
});
// Crear un nuevo usuario
app.post('/api/usuarios', async (req, res) => {
try {
const usuario = new Usuario(req.body);
const resultado = await usuario.save();
res.status(201).send(resultado);
} catch (err) {
res.status(400).send(err);
}
});
// Obtener todos los usuarios
app.get('/api/usuarios', async (req, res) => {
try {
const usuarios = await Usuario.find();
res.status(200).send(usuarios);
} catch (err) {
res.status(500).send(err);
}
});
// Obtener un usuario específico
app.get('/api/usuarios/:id', async (req, res) => {
try {
const usuario = await Usuario.findById(req.params.id);
if (!usuario) {
return res.status(404).send();
}
res.status(200).send(usuario);
} catch (err) {
res.status(500).send(err);
}
});
// Actualizar un usuario
app.put('/api/usuarios/:id', async (req, res) => {
try {
const usuario = await Usuario.findByIdAndUpdate(req.params.id, req.body, { new: true, runValidators: true });
if (!usuario) {
return res.status(404).send();
}
res.status(200).send(usuario);
} catch (err) {
res.status(400).send(err);
}
});
// Eliminar un usuario
app.delete('/api/usuarios/:id', async (req, res) => {
try {
const usuario = await Usuario.findByIdAndDelete(req.params.id);
if (!usuario) {
return res.status(404).send();
}
res.status(200).send(usuario);
} catch (err) {
res.status(500).send(err);
}
});
// Iniciar el servidor
app.listen(port, () => {
console.log(`Servidor escuchando en el puerto ${port}`);
});
body-parser
para manejar las solicitudes JSON.crud_rest
en MongoDB.nombre
, email
y edad
.POST /api/usuarios
: Crea un nuevo usuario.GET /api/usuarios
: Obtiene todos los usuarios.GET /api/usuarios/:id
: Obtiene un usuario específico por su ID.PUT /api/usuarios/:id
: Actualiza un usuario existente.DELETE /api/usuarios/:id
: Elimina un usuario específico.Puedes utilizar herramientas como Postman o cURL para probar los endpoints de la API.
curl -X POST http://localhost:3000/api/usuarios \
-H "Content-Type: application/json" \
-d '{
"nombre": "Juan Pérez",
"email": "juan.perez@example.com",
"edad": 30
}'
curl -X GET http://localhost:3000/api/usuarios
curl -X GET http://localhost:3000/api/usuarios/{id}
curl -X PUT http://localhost:3000/api/usuarios/{id} \
-H "Content-Type: application/json" \
-d '{
"email": "juan.nuevo@example.com"
}'
curl -X DELETE http://localhost:3000/api/usuarios/{id}
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod Lorem ipsum dolor sit amet.