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);Défi
FacilePOST /api/tasksavec{ "title" }répond avec le code 201 et la nouvelle tâche :idprovenant denextId()dansstore.js,done: false,createdAtprovenant denew Date().toISOString().- Il définit
Locationsur/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
1Ressources et verbes
Ressources et URLCréer avec POST