LU16b – UPDATE (PUT) & DELETE (DELETE) mit Express und Postman

Lernziele

Voraussetzungen

Damit PUT und DELETE funktionieren, muss in Ihrem index.js weiterhin Folgendes vorhanden sein:

Fügen Sie die folgenden Routen unterhalb Ihrer bisherigen Routen in index.js ein (die Reihenfolge ist nicht entscheidend, aber Übersicht hilft).

UPDATE – Post aktualisieren (PUT /api/posts/:id)

Was bedeutet UPDATE mit PUT?

Mit PUT aktualisieren Sie einen bestehenden Datensatz. Der Client schickt dazu einen Request an:

Code: PUT-Route

// UPDATE – vorhandenen Post aktualisieren
app.put('/api/posts/:id', (req, res) => {
  const id = Number(req.params.id);
 
  // Post suchen nach der ID aus dem Request im posts-Array (Liste)
  const post = posts.find(p => p.post_id === id);
 
  if (!post) {
    return res.status(404).send('Post nicht gefunden');
  }
 
  // Neue Werte aus dem Body lesen
  const userId = req.body.user_id;
  const title = req.body.title;
  const imageUrl = req.body.image_url;
  const description = req.body.description;
  const likes = req.body.likes;
 
  // Validierung: mindestens ein Feld muss vorhanden sein
  if (
    userId === undefined &&
    title === undefined &&
    imageUrl === undefined &&
    description === undefined &&
    likes === undefined
  ) {
    return res.status(400).send('Bitte mindestens ein Feld zum Aktualisieren mitsenden.');
  }
 
  // Update nur für Felder, die wirklich geschickt wurden
  if (userId !== undefined) {
    post.user_id = userId;
  }
  if (title !== undefined) {
    post.title = title;
  }
  if (imageUrl !== undefined) {
    post.image_url = imageUrl;
  }
  if (description !== undefined) {
    post.description = description;
  }
  if (likes !== undefined) {
    post.likes = likes;
  }
 
  // Antwort: 200 OK + aktualisiertes Objekt
  res.status(200).json(post);
});

Test mit Postman (PUT)

 Screenshot: einen Post abändern.

  1. Methode: PUT
  2. Tab BodyrawJSON
  3. Beispiel-Body:
{
  "title": "Sunset Vibes (updated)",
  "likes": 99
}

Erwartung:

DELETE – Post löschen (DELETE /api/posts/:id)

Was bedeutet DELETE?

Mit DELETE entfernen Sie einen Datensatz. Der Client schickt dazu einen Request an:

Der Server sucht den passenden Post und entfernt ihn aus der Liste.

Code: DELETE-Route

// DELETE – Post löschen
app.delete('/api/posts/:id', (req, res) => {
  const id = Number(req.params.id);
 
  // Index suchen (praktisch fürs Löschen)
  const index = posts.findIndex(p => p.post_id === id);
 
  if (index === -1) {
    return res.status(404).send('Post nicht gefunden');
  }
 
  // Löschen: splice gibt ein Array zurück -> [0] ist das gelöschte Objekt
  const deletedPost = posts.splice(index, 1)[0];
 
  // Antwort: 200 OK + gelöschter Post (zur Kontrolle)
  res.status(200).json(deletedPost);
});

Test mit Postman (DELETE)

 Screenshot: einen Post aus der Liste löschen.

  1. Methode: DELETE

Erwartung:

Danach:

Typische Fehlerquellen

Ausblick

Sie können jetzt CRUD auf API-Ebene komplett:

In der nächsten Unterrichtseinheit ersetzen wir die lokale Liste posts durch eine echte MySQL-Tabelle und führen dieselben Operationen über SQL aus.