Eliminar
Parte de la sección API REST del Journey de Node.js de Coddy. Lección 4 de 18.
Después de eliminar algo, no queda nada que mostrar al cliente. La respuesta para eso es 204 No Content: la solicitud funcionó y el cuerpo está vacío.
DELETE /api/events/5 → 204 No Content
DELETE /api/events/5 → 404 Not FoundLa segunda solicitud no encuentra el evento 5, así que responde 404, como una solicitud GET para un id desconocido. Para eliminar un elemento de un array, encuentra su posición con findIndex, que devuelve -1 cuando no hay ninguna coincidencia, y elimínalo con splice:
events.splice(index, 1); // elimina 1 elemento en index
res.status(204).end(); // un estado y sin cuerpoDesafío
FácilDELETE /api/tasks/:idelimina la tarea y responde con 204 sin cuerpo.- Un id desconocido responde con 404 y
{ "error": "Task not found" }.
Envía DELETE /api/tasks/3 dos veces y después GET /api/tasks.
Pruébalo tú mismo
import { Router } from 'express';
import { nextId, tasks } from '../store.js';
const router = Router();
router.get('/', (req, res) => {
res.json(tasks);
});
router.get('/:id', (req, res) => {
const task = tasks.find((t) => t.id === Number(req.params.id));
if (!task) {
return res.status(404).json({ error: 'Task not found' });
}
res.json(task);
});
router.post('/', (req, res) => {
const { title } = req.body ?? {};
if (!title) {
return res.status(400).json({ error: 'title is required' });
}
const task = { id: nextId(), title, done: false, createdAt: new Date().toISOString() };
tasks.push(task);
res.status(201).location(`/api/tasks/${task.id}`).json(task);
});
router.patch('/:id', (req, res) => {
const task = tasks.find((t) => t.id === Number(req.params.id));
if (!task) {
return res.status(404).json({ error: 'Task not found' });
}
const { title, done } = req.body ?? {};
if (title !== undefined) task.title = title;
if (done !== undefined) task.done = done;
res.json(task);
});
export default router;
Todas las lecciones de API REST
1Recursos y verbos
Recursos y URLCrear con POST