Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| modul:m290_guko:learningunits:lu16:theorie:a_intro [2025/12/18 13:49] – gkoch | modul:m290_guko:learningunits:lu16:theorie:a_intro [2026/01/02 22:59] (aktuell) – gkoch | ||
|---|---|---|---|
| Zeile 3: | Zeile 3: | ||
| ===== Lernziele ===== | ===== Lernziele ===== | ||
| - | * Sie können erklären, wie eine **HTTP-Anfrage** und eine **HTTP-Antwort** funktionieren. ((HTTP = „Hypertext Transfer Protocol“: | + | * Sie können erklären, wie eine **HTTP-Anfrage** und eine **HTTP-Antwort** funktionieren.((HTTP = „Hypertext Transfer Protocol“: |
| * Sie können die vier wichtigsten HTTP-Methoden **GET, POST, PUT, DELETE** den CRUD-Operationen zuordnen. | * Sie können die vier wichtigsten HTTP-Methoden **GET, POST, PUT, DELETE** den CRUD-Operationen zuordnen. | ||
| * Sie verstehen, was eine **API** und was eine **Route** in Express ist. | * Sie verstehen, was eine **API** und was eine **Route** in Express ist. | ||
| Zeile 23: | Zeile 23: | ||
| Jetzt übertragen wir diese Idee auf das **Web**: | Jetzt übertragen wir diese Idee auf das **Web**: | ||
| - | Statt direkt SQL zu tippen, schicken wir **HTTP-Anfragen** an einen **Backend-Server** ((Backend-Server = Programm, das Anfragen entgegennimmt und Antworten zurückschickt; | + | Statt direkt SQL zu tippen, schicken wir **HTTP-Anfragen** an einen **Backend-Server**((Backend-Server = Programm, das Anfragen entgegennimmt und Antworten zurückschickt; |
| Der Server führt für uns die passenden CRUD-Operationen aus und sendet eine Antwort zurück. | Der Server führt für uns die passenden CRUD-Operationen aus und sendet eine Antwort zurück. | ||
| - | Wir bauen zuerst eine **API für Social-Media-Posts**, | + | Wir bauen zuerst eine **API für Social-Media-Posts**, |
| So können wir **HTTP, Routen und Postman** kennenlernen, | So können wir **HTTP, Routen und Postman** kennenlernen, | ||
| Zeile 37: | Zeile 37: | ||
| Stellen Sie sich das so vor: | Stellen Sie sich das so vor: | ||
| - | * **Client** (Browser oder Postman) = Gast im Restaurant ((Client = Programm, das eine Anfrage sendet.)) | + | * **Client** (Browser oder Postman) = Gast im Restaurant((Client = Programm, das eine Anfrage sendet.)) |
| - | * **Server** (Express/ | + | * **Server** (Express/ |
| * **HTTP-Anfrage** = Bestellung, die der Kellner/die Kellnerin zur Küche bringt | * **HTTP-Anfrage** = Bestellung, die der Kellner/die Kellnerin zur Küche bringt | ||
| * **HTTP-Antwort** = fertiges Gericht, das der Kellner zurückbringt | * **HTTP-Antwort** = fertiges Gericht, das der Kellner zurückbringt | ||
| Zeile 45: | Zeile 45: | ||
| * eine **Methode** (z.B. '' | * eine **Methode** (z.B. '' | ||
| - | * einen **Pfad**((Pfad = der Teil der URL nach Domain/ | + | * einen **Pfad**((Pfad = der Teil der URL nach Domain/ |
| - | * optional einen **Body**((Body = „Datenkörper“ der Anfrage, z.B. ein JSON-Objekt.)) (z.B. JSON bei '' | + | * optional einen **Body**((Body = „Datenkörper“ der Anfrage, z.B. ein JSON-Objekt bei '' |
| Der Server reagiert auf eine Anfrage, indem er: | Der Server reagiert auf eine Anfrage, indem er: | ||
| Zeile 227: | Zeile 227: | ||
| // READ – einzelner Post nach ID | // READ – einzelner Post nach ID | ||
| app.get('/ | app.get('/ | ||
| - | const id = Number(req.params.id); | + | const id = Number(req.params.id); |
| const post = posts.find(p => p.post_id === id); | const post = posts.find(p => p.post_id === id); | ||
| Zeile 262: | Zeile 262: | ||
| app.post('/ | app.post('/ | ||
| //Daten aus dem Anfrage-Objekt (Request) holen und in Variablen speichern | //Daten aus dem Anfrage-Objekt (Request) holen und in Variablen speichern | ||
| - | const userId | + | const user_id |
| const title = req.body.title; | const title = req.body.title; | ||
| - | const imageUrl | + | const image_url |
| const description = req.body.description; | const description = req.body.description; | ||
| // ganz einfache Validierung (Pflichtfelder) - ohne titel oder user_id (wer post erstellt hat) können wir keinen neuen Post erstellen. | // ganz einfache Validierung (Pflichtfelder) - ohne titel oder user_id (wer post erstellt hat) können wir keinen neuen Post erstellen. | ||
| - | if (!title || !userId) { | + | if (!title || !user_id) { |
| return res.status(400).send(' | return res.status(400).send(' | ||
| } | } | ||
| Zeile 279: | Zeile 279: | ||
| const newPost = { | const newPost = { | ||
| post_id: newPostId, | post_id: newPostId, | ||
| - | user_id: | + | user_id: |
| title: title, | title: title, | ||
| - | image_url: | + | image_url: |
| description: | description: | ||
| likes: 0 | likes: 0 | ||