7.0 KiB
Übungsblatt 05
1. REST-API-Übung: GET
Aufgabenstellung: Nutzen Sie die frei zugängliche Test-API JSONPlaceholder für erste Rest-API-Anfragen.
Vorbereitung
- Öffnen Sie ein Terminal (macOS/Linux) oder PowerShell/CMD (Windows).
- Prüfen Sie, ob
curlinstalliert ist:
curl --version
Arbeitsschritte
- Führen Sie einfache GET-Requests aus und beantworten Sie die Fragen:
curl https://jsonplaceholder.typicode.com/users
- Frage: Welchen Usernamen benutzt Ervin Howell?
curl https://jsonplaceholder.typicode.com/posts
- Frage: Wieviele Posts wurden von dem/der Nutzer:in mit der User-ID 6 gespeichert?
curl https://jsonplaceholder.typicode.com/posts/1
- Frage: Wie lautet der Titel des Posts mit der ID 1?
curl https://jsonplaceholder.typicode.com/posts/1/comments
- Frage: Wieviele Kommentare hat der Post mit der ID 1 erhalten?
curl https://jsonplaceholder.typicode.com/comments
- Frage: Gibt es andere Posts (außer ID 1), die Kommentare erhalten haben?
- 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) für weitere Rest-API-Anfragen.
Arbeitsschritte:
- Finden Sie die ID von Professor Firenze heraus. Welchen
curl-Befehl haben Sie verwendet? - Nutzen Sie diese ID, um ausschließlich die Informationen zu Professor Firenze zu finden. Welchen
curl-Befehl haben Sie verwendet? - Welche Haarfarbe hat er?
3. REST-API-Übung: POST, PUT, PATCH, DELETE
Aufgabenstellung: Nutzen Sie die limitiert zugängliche Test-API crudcrud für weitere Rest-API-Anfragen.
Hinweis: Beachten Sie den mitgelieferten Hinweis zum Escaping unter Windows.
Vorbereitung
- Besuchen Sie die Seite: https://crudcrud.com
- Ihnen wird ein eindeutiger API-Endpunkt zugewiesen: Notieren Sie sich diesen. (Beispiel: https://crudcrud.com/api/bd8ba488cd2641618af6d0d016678159)
- Öffnen Sie einen Terminal und setzen eine Variable
API_IDmit 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
-
Führen Sie einfache POST-Requests aus (Achtung: Funktioniert nur mit gesetzter Variable oder setzen Sie Ihre eigene Endpunkt-Kennung manuell ein.)
- Lavendel
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"}'- Pfingstrose
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"}'- Funkie
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"}'-
Formulieren Sie einen eigenen POST-Request für:
Name: Sonnenhut
Botanischer Name: Echinacea purpurea
Standort: Sonnig
Besonderheiten: Heilpflanze, zieht Schmetterlinge an, robust -
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
-
Überprüfen Sie das Ergebnis Ihrer POST-Requests:
curl https://crudcrud.com/api/${API_ID}/staudenpflanzen- Finden Sie die IDs der Funkie, des Sonnenhuts und der Pfingstrose heraus und notieren Sie sich diese.
-
Führen Sie einfache PUT-Requests aus, indem Sie die richtige ID einsetzen
<id>:- Sonnenhut
curl -X PUT https://crudcrud.com/api/${API_ID}/staudenpflanzen/<id> \ --header 'Content-Type: application/json' \ --data '{"name": "Sonnenhut", "botanischer_name": "Echinacea purpurea", "standort": "Sonnig", "besonderheiten": "Heilpflanze, zieht Schmetterlinge, schneckenanfällig"}'- Formulieren Sie einen eigenen PUT-Request für die Funkie und ändern Sie die Besonderheiten zu "Dekoratives Laub, schneckenanfällig, robust".
-
Führen Sie einen einfachen DELETE-Request aus
- Pfingstrose
curl -X DELETE https://crudcrud.com/api/${API_ID}/staudenpflanzen/<id> -
Geben Sie die gesamte Liste der Staudenpflanzen aus 1.
curl https://crudcrud.com/api/${API_ID}/staudenpflanzen | jqSpeichern sie das zurückgelieferte JSON und geben Sie es als Lösung der Übung ab.
Tipp:
jqist ein Kommandozeilen-Tool zur Formatierung von JSON-Daten. In diesem Beispiel filtertjqdie Antwort voncurl, 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 (camelCaseoder snake_case möglich, aber nicht mischen).
Arbeitsschritte
-
Erstelle ein JSON-Objekt mit Informationen über eine Person:
- Name: Alex
- Alter: 30
- Wohnort: Berlin
-
Erstelle ein JSON-Objekt zu einem Produkt:
- Produktname: Kopfhörer
- Preis: 89.99
- Verfügbarkeit: Ja
- Farben: Schwarz und Weiß (als Liste)
-
Erstelle ein JSON-Objekt zu einem Benutzer inklusive Adresse:
- Benutzername: maria1999
- Passwort: abc123
- Rolle: Admin
- Adresse: Bauernring 15 (Straße), Weilbach (Stadt) und 12345 (Postleitzahl) (als verschachteltes Objekt)
-
Erstelle ein Array mit zwei Aufgabenobjekten. Jede Aufgabe hat einen Titel und einen erledigt-Status (true/false)
-
Erstelle ein JSON-Objekt für einen Blogeintrag mit folgendem Aufbau:
- Titel, Autor, Inhalt des Beitrags
- 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
-
Öffnen Sie die "Simple Greeting API" (
05_loesungen/greeting.json) in VS Code und starten Sie die OpenAPI Preview (Shift+Alt+P). -
Erweitern Sie die
GET-Anfrage um einen Parameternamevom Typstring. -
Erweitern Sie die
POST-Anfrage um einen Request-Body vom Typstring. -
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:
{
"name": "Florian",
"age": 23
}