Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
modul:m290_guko:learningunits:lu17:theorie:a_intro [2026/01/02 23:17] gkochmodul:m290_guko:learningunits:lu17:theorie:a_intro [2026/01/12 07:43] (aktuell) gkoch
Zeile 216: Zeile 216:
 </WRAP> </WRAP>
  
-**Test in Postman**+=== Test in Postman ===
   * Methode: ''GET''   * Methode: ''GET''
   * URL: ''http://localhost:3000/api/posts''   * URL: ''http://localhost:3000/api/posts''
Zeile 319: Zeile 319:
 </code> </code>
 </WRAP> </WRAP>
 +
 +=== Test in Postman ===
  
 **Test-Body (Postman → Body → raw → JSON)** **Test-Body (Postman → Body → raw → JSON)**
Zeile 335: Zeile 337:
 ==== UPDATE: Post ändern (PUT /api/posts/:id) ==== ==== UPDATE: Post ändern (PUT /api/posts/:id) ====
  
-In LU16b haben Sie einen Post so aktualisiert: Nur die Felderdie im Body wirklich mitgeschickt werden, werden geändert.+In LU16b haben Sie einen Post so aktualisiert: Der ganze Datensatz wird ersetztwenn wir ein Update machen.
 Genau diese Logik übernehmen wir jetzt – der Unterschied ist nur: statt im Array ändern wir jetzt die MySQL-Tabelle ''posts''. Genau diese Logik übernehmen wir jetzt – der Unterschied ist nur: statt im Array ändern wir jetzt die MySQL-Tabelle ''posts''.
  
Zeile 401: Zeile 403:
 </code> </code>
 </WRAP> </WRAP>
 +
 +=== Test in Postman ===
  
 **Test-Body** **Test-Body**
Zeile 416: Zeile 420:
  
 Erwartung: Erwartung:
 +  * Status ''200 OK''
 +  * JSON-Objekt des aktualisierten Posts (inkl. neuem ''title'' und ''likes'')
  
-Status ''200 OK'' 
- 
-JSON-Objekt des aktualisierten Posts (inkl. neuem ''title'' und ''likes'') 
- 
-DELETE-Section ersetzen durch diese Version 
  
 ==== DELETE: Post löschen (DELETE /api/posts/:id) ==== ==== DELETE: Post löschen (DELETE /api/posts/:id) ====
- 
-In LU16b haben Sie beim Löschen den gelöschten Post zurückgegeben (zur Kontrolle). 
-Das machen wir hier genauso – nur mit MySQL: 
- 
-zuerst den Post mit ''SELECT'' holen, 
- 
-dann mit ''DELETE'' löschen, 
- 
-dann den vorher geholten Post zurückgeben. 
- 
 <WRAP box round center 80%> <WRAP box round center 80%>
 <code javascript> <code javascript>
-// DELETE – Post löschen (wie in LU16b: gelöschtes Objekt zurückgeben) +// DELETE – Post löschen
-// Route: DELETE http://localhost:3000/api/posts/+
 app.delete('/api/posts/:id', (req, res) => { app.delete('/api/posts/:id', (req, res) => {
  
-const id = Number(req.params.id);+  const id = Number(req.params.id);
  
-if (Number.isNaN(id)) { +  if (Number.isNaN(id)) { 
-return res.status(400).send('Ungültige ID (muss eine Zahl sein)'); +    return res.status(400).send('Ungültige ID (muss eine Zahl sein)'); 
-}+  }
  
-// 1) Post zuerst holen (damit wir ihn nach dem Löschen zurückgeben können) +  const sql 'DELETE FROM posts WHERE id = ?';
-const selectSql SELECT id, user_id, title, image_url, description, likes FROM posts WHERE id = ? ;+
  
-db.query(selectSql, [id], (err, rows) => {+  db.query(sql, [id], (err, result) => { 
 +    if (err) { 
 +      console.error('DB-Fehler bei DELETE /api/posts/:id:', err); 
 +      return res.status(500).send('Serverfehler beim Löschen des Posts'); 
 +    }
  
-if (err) { +    if (result.affectedRows === 0) { 
-  console.error('DB-Fehler bei SELECT vor DELETE:', err); +      return res.status(404).send('Post nicht gefunden'); 
-  return res.status(500).send('Serverfehler beim Löschen des Posts'); +    }
-}+
  
-if (rows.length === 0) { +    // Antwort: 200 + Message 
-  return res.status(404).send('Post nicht gefunden'); +    res.status(200).json({ message: `Post mit id=${id} wurde gelöscht.` });
-}+
  
-const deletedPost = rows[0]; +  });
- +
-// 2) Jetzt löschen +
-const deleteSql = 'DELETE FROM posts WHERE id = ?'; +
- +
-db.query(deleteSql, [id], (err2, result) => { +
- +
-  if (err2) { +
-    console.error('DB-Fehler bei DELETE /api/posts/:id:', err2); +
-    return res.status(500).send('Serverfehler beim Löschen des Posts'); +
-  } +
- +
-  // 3) Lernfreundlich: 200 + gelöschtes Objekt (wie LU16b) +
-  res.status(200).json(deletedPost); +
- +
-}); +
- +
- +
-});+
 }); });
 </code> </code>
 </WRAP> </WRAP>
  
-Test mit Postman (DELETE)+=== Test mit Postman ===
  
-Methode: ''DELETE'' +  * Methode: ''DELETE'' 
- +  URL: ''http://localhost:3000/api/posts/1''
-URL: ''http://localhost:3000/api/posts/1 +
-''+
  
 Erwartung: Erwartung:
- +  * Status ''200 OK'' 
-Status ''200 OK'' +  JSON-Objekt des gelöschten Posts 
- +  Danach ''GET /api/posts/1'' → ''404 Not Found''
-JSON-Objekt des gelöschten Posts +
- +
-Danach ''GET /api/posts/1'' → ''404 Not Found''+
  
  
  • modul/m290_guko/learningunits/lu17/theorie/a_intro.1767392255.txt.gz
  • Zuletzt geändert: 2026/01/02 23:17
  • von gkoch