Menu
CoddyTech

Erstellen mit POST

Teil des Abschnitts REST-APIs der Node.js-Journey von Coddy. Lektion 2 von 18.

Ein Client, der eine Aufgabe hinzufügt, muss wissen, wo sich die neue Aufgabe befindet. Er sendet die neue Ressource mit POST an die URL der Liste, und der Server antwortet mit 201 Created, der Ressource und einem Location-Header, der ihre URL angibt.

POST /api/events   { "name": "Launch party" }

201 Created
Location: /api/events/12
{ "id": 12, "name": "Launch party" }

Der Server wählt die ID aus, sodass zwei Clients niemals dieselbe beanspruchen können. Mit dem Location-Header kann der Client das neue Ereignis abrufen, ohne die URL selbst zusammenstellen zu müssen. res.location(path) setzt diesen Header und lässt sich wie res.status verketten:

res.status(201).location(`/api/events/${event.id}`).json(event);
challenge icon

Aufgabe

Einfach
  • POST /api/tasks mit { "title" } antwortet mit 201 und der neuen Aufgabe: id aus nextId() in store.js, done: false, createdAt aus new Date().toISOString().
  • Setzt Location auf /api/tasks/<id>.
  • Kein title: 400.

Sende { "title": "Order new chairs" }, rufe dann den Location-Pfad mit GET ab und sende anschließend POST {}.

Probier es selbst

import { Router } from 'express';
import { 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);
});

export default router;

Alle Lektionen in REST-APIs