Entwirf eine saubere REST-API mit den richtigen HTTP-Methoden, den richtigen Statuscodes und einer Validierung der Anfrage-Rümpfe.
Diese Lektion in Kodokon öffnenEine REST-API stellt Ressourcen bereit (Nutzer, Aufgaben, Bestellungen), die mit HTTP-Methoden bearbeitet werden: GET zum Lesen, POST zum Erstellen, PUT oder PATCH zum Aktualisieren, DELETE zum Entfernen. Die professionelle Konvention: Substantive im Plural, niemals Verben in den URLs. Du schreibst POST /tasks, nicht /createTask. Bauen wir eine kleine Aufgaben-API, vorerst im Arbeitsspeicher.
import express from "express";
const app = express();
app.use(express.json());
const tasks = [
{ id: 1, title: "Review the module", done: false }
];
app.get("/tasks", (req, res) => {
res.json(tasks);
});
app.listen(3000);Die Zeile app.use(express.json()) ist unverzichtbar: Ohne sie ist req.body bei jeder JSON-Anfrage undefined. Beim Erstellen validierst du immer die Eingabe, antwortest mit 201 und gibst die erstellte Ressource zurück: So kann der Client die vom Server erzeugte id abholen.
app.post("/tasks", (req, res) => {
const { title } = req.body;
if (!title) {
return res.status(400).json({
error: "The title field is required"
});
}
const task = {
id: tasks.length + 1,
title,
done: false
};
tasks.push(task);
res.status(201).json(task);
});Merke dir die Codes, die du täglich verwendest: 200 erfolgreiches Lesen oder Aktualisieren, 201 Ressource erstellt, 204 Erfolg ohne Inhalt (Löschung), 400 ungültige Anfrage, 404 Ressource nicht gefunden, 500 Serverfehler. Die Regel: Bei 4xx hat der Client einen Fehler gemacht, bei 5xx hat dein eigener Code versagt.
app.delete("/tasks/:id", (req, res) => {
const id = Number(req.params.id);
const index = tasks.findIndex((t) => t.id === id);
if (index === -1) {
return res.status(404).json({
error: "Task not found"
});
}
tasks.splice(index, 1);
res.status(204).end();
});req.body bei einer JSON-Anfrage undefined?app.use(express.json())app.use(express.static(...))app.listen(3000)title. Wie reagiert die API richtig?