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/16 11:17] – 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, | ||
| + | |||
| + | <WRAP center round tip 70%> | ||
| + | Schauen Sie sich das Video zum Unterricht an – Einführung in APIs und Umsetzung von CRUD mit express: [[https:// | ||
| + | </ | ||
| ===== HTTP-Methoden – wie Bestellungen in einem Restaurant ===== | ===== HTTP-Methoden – wie Bestellungen in einem Restaurant ===== | ||
| Zeile 33: | 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 41: | 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 190: | Zeile 194: | ||
| </ | </ | ||
| - | Wenn Sie diesen Server mit '' | + | Wenn Sie diesen Server mit '' |
| Zeile 223: | 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 258: | 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 275: | 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 | ||
| Zeile 311: | Zeile 315: | ||
| === Test mit Postman === | === Test mit Postman === | ||
| - | {{: | + | {{: |
| - Methode: '' | - Methode: '' | ||
| Zeile 336: | Zeile 340: | ||
| ===== Ausblick ===== | ===== Ausblick ===== | ||
| - | In dieser Learning Unit haben Sie: | + | Auf der nächsten Seite sind die HTTP-Methoden |
| - | + | ||
| - | * die **HTTP-Methoden** im Kontext von CRUD kennengelernt, | + | |
| - | * mit **Postman** einfache Requests an Ihren Express-Server geschickt, | + | |
| - | * eine kleine API mit einer lokalen JavaScript-Liste (Array) von '' | + | |
| - | In der nächsten Unterrichtseinheit: | + | In der nächsten Unterrichtseinheit |
| * ersetzen wir die JavaScript-Liste durch eine **MySQL-Tabelle '' | * ersetzen wir die JavaScript-Liste durch eine **MySQL-Tabelle '' | ||
| - | * ergänzen **Update (PUT)** und **Delete (DELETE)** für vollständiges CRUD, | ||
| * bauen einfache **Validierung** und **Fehlerbehandlung** (HTTP-Statuscodes) ein, | * bauen einfache **Validierung** und **Fehlerbehandlung** (HTTP-Statuscodes) ein, | ||
| * damit Sie diese Struktur für Ihren eigenen Projekt-Use-Case übernehmen können. | * damit Sie diese Struktur für Ihren eigenen Projekt-Use-Case übernehmen können. | ||