# Übungsblatt 05 ## 1. REST-API-Übung: GET **Aufgabenstellung**: Nutzen Sie die frei zugängliche Test-API _[JSONPlaceholder](https://jsonplaceholder.typicode.com)_ für erste Rest-API-Anfragen. #### Vorbereitung - Öffnen Sie ein Terminal (macOS/Linux) oder PowerShell/CMD (Windows). - Prüfen Sie, ob `curl` installiert ist: `curl --version` #### Arbeitsschritte 1. Führen Sie einfache GET-Requests aus und beantworten Sie die Fragen: 1. `curl https://jsonplaceholder.typicode.com/users` - *Frage*: Welchen Usernamen benutzt Ervin Howell? 2. `curl https://jsonplaceholder.typicode.com/posts` - *Frage*: Wieviele Posts wurden von dem/der Nutzer:in mit der User-ID 6 gespeichert? 3. `curl https://jsonplaceholder.typicode.com/posts/1` - *Frage*: Wie lautet der Titel des Posts mit der ID 1? 4. `curl https://jsonplaceholder.typicode.com/posts/1/comments` - *Frage*: Wieviele Kommentare hat der Post mit der ID 1 erhalten? 5. `curl https://jsonplaceholder.typicode.com/comments` - *Frage*: Gibt es andere Posts (außer ID 1), die Kommentare erhalten haben? 6. *Frage*: Wie finde ich alle Posts, die von dem/der Nutzer:in mit der User-ID 2 gespeichert wurden? ## 2. REST-API-Übung: GET **Aufgabenstellung**: Nutzen Sie die frei zugängliche Test-API [HP-API (Harry Potter API)](https://hp-api.onrender.com) für weitere Rest-API-Anfragen. #### Arbeitsschritte: 1. Finden Sie die ID von Professor Firenze heraus. Welchen `curl`-Befehl haben Sie verwendet? 2. Nutzen Sie diese ID, um ausschließlich die Informationen zu Professor Firenze zu finden. Welchen `curl`-Befehl haben Sie verwendet? 3. Welche Haarfarbe hat er? ## 3. REST-API-Übung: POST, PUT, PATCH, DELETE **Aufgabenstellung**: Nutzen Sie die limitiert zugängliche Test-API [_crudcrud_](https://crudcrud.com) für weitere Rest-API-Anfragen. _Hinweis: Beachten Sie den mitgelieferten Hinweis zum Escaping unter Windows._ #### Vorbereitung 1. Besuchen Sie die Seite: https://crudcrud.com 2. Ihnen wird ein eindeutiger API-Endpunkt zugewiesen: Notieren Sie sich diesen. (Beispiel: https://crudcrud.com/api/bd8ba488cd2641618af6d0d016678159) 3. Öffnen Sie einen Terminal und setzen eine Variable `API_ID` mit Ihrer API-Kennung. (Beispiel: `API_ID=bd8ba488cd2641618af6d0d016678159`) _Hinweis: Ihr persönlicher API-Endpunkt ist nur für 24 Stunden gültig und kann nur begrenzt viele Anfragen (100) entgegennehmen._ #### Arbeitsschritte 1. Führen Sie einfache POST-Requests aus (Achtung: Funktioniert nur mit gesetzter Variable oder setzen Sie Ihre eigene Endpunkt-Kennung manuell ein.) 1. Lavendel ```bash curl -X POST https://crudcrud.com/api/${API_ID}/staudenpflanzen \ --header 'Content-Type: application/json' \ --data '{"name": "Lavendel", "botanischer_name": "Lavandula angustifolia", "standort": "Sonnig, trocken", "besonderheiten": "Duftend, bienenfreundlich, winterhart"}' ``` 2. Pfingstrose ```bash curl -X POST https://crudcrud.com/api/${API_ID}/staudenpflanzen \ --header 'Content-Type: application/json' \ --data '{"name": "Pfingstrose", "botanischer_name": "Paeonia lactiflora", "standort": "Halbschatten bis sonnig", "besonderheiten": "Große Blüten, langlebig, schnittgeeignet"}' ``` 3. Funkie ```bash curl -X POST https://crudcrud.com/api/${API_ID}/staudenpflanzen \ --header 'Content-Type: application/json' \ --data '{"name": "Funkie", "botanischer_name": "Hosta", "standort": "Halbschatten bis Schatten", "besonderheiten": "Dekoratives Laub, schneckenanfällig, pflegeleicht"}' ``` 4. Formulieren Sie einen eigenen POST-Request für:
_Name: Sonnenhut
Botanischer Name: Echinacea purpurea
Standort: Sonnig
Besonderheiten: Heilpflanze, zieht Schmetterlinge an, robust
_ 5. Formulieren Sie einen eigenen POST-Request für:
_Name: Tränendes Herz
Botanischer Name: Lamprocapnos spectabilis
Standort: Halbschatten
Besonderheiten: Herzförmige Blüten, romantisch, giftig
_ 2. Überprüfen Sie das Ergebnis Ihrer POST-Requests: 1. ```bash curl https://crudcrud.com/api/${API_ID}/staudenpflanzen ``` 2. Finden Sie die IDs der Funkie, des Sonnenhuts und der Pfingstrose heraus und notieren Sie sich diese. 3. Führen Sie einfache PUT-Requests aus, indem Sie die richtige ID einsetzen ``: 1. Sonnenhut ```bash curl -X PUT https://crudcrud.com/api/${API_ID}/staudenpflanzen/ \ --header 'Content-Type: application/json' \ --data '{"name": "Sonnenhut", "botanischer_name": "Echinacea purpurea", "standort": "Sonnig", "besonderheiten": "Heilpflanze, zieht Schmetterlinge, schneckenanfällig"}' ``` 2. Formulieren Sie einen eigenen PUT-Request für die Funkie und ändern Sie die Besonderheiten zu "Dekoratives Laub, schneckenanfällig, robust". 4. Führen Sie einen einfachen DELETE-Request aus 1. Pfingstrose ```bash curl -X DELETE https://crudcrud.com/api/${API_ID}/staudenpflanzen/ ``` 5. Geben Sie die gesamte Liste der Staudenpflanzen aus 1. ```bash curl https://crudcrud.com/api/${API_ID}/staudenpflanzen | jq ``` Speichern sie das zurückgelieferte JSON und geben Sie es als Lösung der Übung ab. _Tipp: `jq` ist ein Kommandozeilen-Tool zur Formatierung von JSON-Daten. In diesem Beispiel filtert `jq` die Antwort von `curl`, sodass die JSON-Daten strukturiert und lesbar angezeigt werden._ ## 4. JSON-Übung **Aufgabenstellung**: Erstellen Sie erste JSON-Objekte. *Hinweis: Es ist nicht technisch vorgeschrieben, aber **Best Practice**, Schlüssel in Kleinbuchstaben zu halten (`camelCase`oder `snake_case` möglich, aber nicht mischen).* #### Arbeitsschritte 1. Erstelle ein JSON-Objekt mit Informationen über eine Person: 1. Name: Alex 2. Alter: 30 3. Wohnort: Berlin 2. Erstelle ein JSON-Objekt zu einem Produkt: 1. Produktname: Kopfhörer 2. Preis: 89.99 3. Verfügbarkeit: Ja 4. Farben: Schwarz und Weiß (als Liste) 3. Erstelle ein JSON-Objekt zu einem Benutzer inklusive Adresse: 1. Benutzername: maria1999 2. Passwort: abc123 3. Rolle: Admin 4. Adresse: Bauernring 15 (Straße), Weilbach (Stadt) und 12345 (Postleitzahl) (*als verschachteltes Objekt*) 4. Erstelle ein Array mit zwei Aufgabenobjekten. Jede Aufgabe hat einen Titel und einen erledigt-Status (true/false) 5. Erstelle ein JSON-Objekt für einen Blogeintrag mit folgendem Aufbau: 1. Titel, Autor, Inhalt des Beitrags 2. Ein Kommentar als verschachteltes Objekt mit Autor und Text ## 5. SWAGGER-Übung **Aufgabenstellung**: Erweitern Sie eine bestehende API um Parameter (`GET`) und Request-Body (`POST`). #### Arbeitsschritte 1. Öffnen Sie die "Simple Greeting API" (`05_loesungen/greeting.json`) in VS Code und starten Sie die _OpenAPI Preview_ (`Shift+Alt+P`). 2. Erweitern Sie die `GET`-Anfrage um einen Parameter `name` vom Typ `string`. 3. Erweitern Sie die `POST`-Anfrage um einen Request-Body vom Typ `string`. 4. Erweitern die API um einen weiteren `POST`-Endpunkt `/hello-json`, welcher ein JSON-Objekt im Request-Body erwartet. Folgendes Beispiel-JSON soll möglich sein: ```json { "name": "Florian", "age": 23 } ```