lab-development-imb/web/05/labor/05_aufgaben.md

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 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?
    1. curl https://jsonplaceholder.typicode.com/posts
    • Frage: Wieviele Posts wurden von dem/der Nutzer:in mit der User-ID 6 gespeichert?
    1. curl https://jsonplaceholder.typicode.com/posts/1
    • Frage: Wie lautet der Titel des Posts mit der ID 1?
    1. curl https://jsonplaceholder.typicode.com/posts/1/comments
    • Frage: Wieviele Kommentare hat der Post mit der ID 1 erhalten?
    1. curl https://jsonplaceholder.typicode.com/comments
    • Frage: Gibt es andere Posts (außer ID 1), die Kommentare erhalten haben?
    1. 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:

  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 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
    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"}'
    
    1. 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"}'
    
    1. 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"}'
    
    1. Formulieren Sie einen eigenen POST-Request für:
      Name: Sonnenhut
      Botanischer Name: Echinacea purpurea
      Standort: Sonnig
      Besonderheiten: Heilpflanze, zieht Schmetterlinge an, robust

    2. 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:

    curl https://crudcrud.com/api/${API_ID}/staudenpflanzen
    
    1. 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 <id>:

    1. 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"}'
    
    1. 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
    curl -X DELETE https://crudcrud.com/api/${API_ID}/staudenpflanzen/<id>
    
  5. Geben Sie die gesamte Liste der Staudenpflanzen aus 1.

    	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 (camelCaseoder 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:

{
  "name": "Florian",
  "age": 23
}