Kodokon kodokon.com

Eine REST-API bauen

Entwirf eine saubere REST-API mit den richtigen HTTP-Methoden, den richtigen Statuscodes und einer Validierung der Anfrage-Rümpfe.

9 Min. · 3 Fragen

Diese Lektion in Kodokon öffnen

Eine 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.

JAVASCRIPT
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.

JAVASCRIPT
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.

JAVASCRIPT
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();
});

Wissenscheck

Stelle sicher, dass du die wichtigsten Punkte dieser Lektion behalten hast.

  1. Welchen Statuscode gibst du zurück, nachdem eine Ressource erfolgreich erstellt wurde?
    • 200
    • 201
    • 204
    • 301
  2. Ohne welche Zeile bleibt req.body bei einer JSON-Anfrage undefined?
    • app.use(express.json())
    • app.use(express.static(...))
    • app.listen(3000)
  3. Ein Client sendet ein POST ohne das erforderliche Feld title. Wie reagiert die API richtig?
    • Sie erstellt die Ressource mit leerem Titel
    • Sie gibt einen Status 400 mit einer Fehlermeldung zurück
    • Sie gibt einen Status 500 zurück
    • Sie ignoriert die Anfrage, ohne zu antworten