Menu
CoddyTech

Eliminazione

Fa parte della sezione API REST del percorso Node.js di Coddy. Lezione 4 di 18.

Dopo un'eliminazione non resta nulla da mostrare al client. La risposta in questo caso è 204 No Content: la richiesta è andata a buon fine e il corpo è vuoto.

DELETE /api/events/5   →  204 No Content
DELETE /api/events/5   →  404 Not Found

La seconda richiesta non trova l'evento 5, quindi risponde 404 come una richiesta GET per un ID sconosciuto. Per rimuovere un elemento da un array, trova la sua posizione con findIndex, che restituisce -1 quando non trova corrispondenze, e rimuovilo con splice:

events.splice(index, 1);   // rimuove 1 elemento all'indice index
res.status(204).end();     // uno stato e nessun corpo
challenge icon

Sfida

Facile
  • DELETE /api/tasks/:id rimuove l'attività e risponde con 204 senza corpo.
  • Un ID sconosciuto risponde con 404 e { "error": "Task not found" }.

Invia DELETE /api/tasks/3 due volte, poi GET /api/tasks.

Provalo tu

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;

Tutte le lezioni di API REST