Menu
CoddyTech

Créer avec POST

Fait partie de la section API REST du Journey Node.js de Coddy. Leçon 2 sur 18.

Un client qui ajoute une tâche doit savoir où se trouve la nouvelle tâche. Il envoie la nouvelle ressource à l’URL de la liste avec POST, et le serveur répond 201 Created avec la ressource et un en-tête Location indiquant son URL.

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

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

Le serveur choisit l’id, ainsi deux clients ne peuvent jamais revendiquer le même. Grâce à l’en-tête Location, le client peut récupérer le nouvel événement sans construire lui-même l’URL. res.location(path) définit cet en-tête, et s’enchaîne comme res.status :

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

Défi

Facile
  • POST /api/tasks avec { "title" } répond avec le code 201 et la nouvelle tâche : id provenant de nextId() dans store.js, done: false, createdAt provenant de new Date().toISOString().
  • Il définit Location sur /api/tasks/<id>.
  • Sans title : 400.

Envoyez { "title": "Order new chairs" }, puis effectuez une requête GET sur le chemin Location, puis une requête POST avec {}.

Essayez vous-même

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;

Toutes les leçons de API REST