Dies ist eine alte Version des Dokuments!
LU16b – UPDATE (PUT) & DELETE (DELETE) mit Express und Postman
Lernziele
- Sie können einen bestehenden Post über
PUT /api/posts/:idaktualisieren (Update). - Sie können einen bestehenden Post über
DELETE /api/posts/:idlöschen (Delete). - Sie wissen, wie Sie
req.params.id(Route-Parameter) undreq.body(Body-Daten) verwenden. - Sie verwenden passende HTTP-Statuscodes (200, 400, 404).
- Sie können die Endpoints mit Postman testen.
Diese Learning Unit baut auf Ihrer LU16-Seite auf. Sie verwenden weiterhin das gleiche posts-Array (Dummy-Daten) und arbeiten ohne Datenbank.
Voraussetzungen
Damit PUT und DELETE funktionieren, muss in Ihrem index.js weiterhin Folgendes vorhanden sein:
app.use(express.json());(damit JSON aus dem Request-Body inreq.bodylandet)- das Array
postsmit Beispiel-Daten - die bereits erstellten Routes
GET /api/posts,GET /api/posts/:idundPOST /api/posts
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:
/api/posts/:id→idist diepost_iddes Posts, der geändert werden soll.- Die neuen Werte werden als JSON im Request-Body mitgeschickt.
In echten REST-APIs bedeutet PUT oft „vollständig ersetzen“.
Für unser Lernbeispiel erlauben wir auch „teilweise Updates“ (wenn nur einzelne Felder geschickt werden). Das ist für die Projektarbeit praktisch.
Code: PUT-Route
<WRAP box round center 80%> <code javascript> UPDATE – vorhandenen Post aktualisieren app.put('/api/posts/:id', (req, res) ⇒ { const id = Number(req.params.id); Post suchen
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