PUT /api/posts/:id aktualisieren (Update).DELETE /api/posts/:id löschen (Delete).req.params.id (Route-Parameter) und req.body (Body-Daten) verwenden.
Damit PUT und DELETE funktionieren, muss in Ihrem index.js weiterhin Folgendes vorhanden sein:
app.use(express.json()); (damit JSON aus dem Request-Body in req.body landet)posts mit Beispiel-DatenGET /api/posts, GET /api/posts/:id und POST /api/posts
Fügen Sie die folgenden Routen unterhalb Ihrer bisherigen Routen in index.js ein (die Reihenfolge ist nicht entscheidend, aber Übersicht hilft).
Mit PUT aktualisieren Sie einen bestehenden Datensatz.
Der Client schickt dazu einen Request an:
/api/posts/:id → id ist die post_id des Posts, der geändert werden soll.// 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); });
PUTBody → raw → JSON{
"title": "Sunset Vibes (updated)",
"likes": 99
}
Erwartung:
200 OKpost_id: 2) mit neuem title und likesGET /api/posts/2 testen → Änderungen sollten sichtbar sein
Mit DELETE entfernen Sie einen Datensatz.
Der Client schickt dazu einen Request an:
DELETE /api/posts/:idDer Server sucht den passenden Post und entfernt ihn aus der Liste.
// 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); });
DELETEErwartung:
200 OKDanach:
GET /api/posts → der gelöschte Post sollte nicht mehr in der Liste seinGET /api/posts/1 → sollte 404 Not Found liefernreq.params.id ist immer ein String → mit Number(…) oder parseInt(…) umwandeln.PUT vergessen viele, den Request-Body als JSON zu senden → in Postman unbedingt raw + JSON wählen.PUT und DELETE immer prüfen: existiert das Objekt? → sonst 404 zurückgeben.PUT: wenn keine Felder im Body sind → 400 zurückgeben (sonst „Update ohne Update“).Sie können jetzt CRUD auf API-Ebene komplett:
POST /api/postsGET /api/posts und GET /api/posts/:idPUT /api/posts/:idDELETE /api/posts/:id
In der nächsten Unterrichtseinheit ersetzen wir die lokale Liste posts durch eine echte MySQL-Tabelle und führen dieselben Operationen über SQL aus.