CodeGym /Kurse /JAVA 25 SELF /Den Umgang mit APIs lernen und die ISS verfolgen

Den Umgang mit APIs lernen und die ISS verfolgen

JAVA 25 SELF
Level 12, Lektion 5
Verfügbar

1. Einführung

Heutzutage nutzt fast jede moderne Anwendung Daten aus dem Internet. Wenn Sie auf dem Handy das Wetter öffnen, ein Taxi bestellen oder Nachrichten lesen – das ist stets das Ergebnis der Arbeit mit einem API. Programme „kommunizieren“ miteinander, tauschen Nachrichten aus, und meist liegen diese Nachrichten als einfacher Text vor – im Format JSON.

JSON (JavaScript Object Notation) ist zum Standard für den Datenaustausch zwischen Diensten geworden. Es wird von Entwicklern und Maschinen gleichermaßen geschätzt: Ein Mensch kann den Text leicht lesen, und ein Programm kann ihn leicht parsen. Für JSON gibt es nur wenige Regeln:

  • Daten werden als Objekt-Wörterbücher gespeichert { "key": Wert },
  • als Arrays [wert1, wert2],
  • oder als einfache Strings, Zahlen, boolesche Werte und null.

Zum Beispiel kann ein JSON-Objekt, das eine Person beschreibt, so aussehen:

{
  "name": "Alice",
  "age": 25,
  "skills": ["Java", "Python", "SQL"]
}

Wir sehen die Schlüssel (name, age, skills) und ihre Werte. Kompakt, anschaulich und universell.

2. Erste Schritte mit APIs

API (Application Programming Interface) – eine „Vereinbarung“ oder ein „Kontrakt“, die besagt: Wenn du eine bestimmte Adresse im Internet aufrufst und solche Parameter angibst, liefere ich dir eine Antwort in einem vereinbarten Format.

Die Adresse, an die wir uns wenden, um Daten zu erhalten, heißt endpoint. Das ist einfach eine URL. Oft enthält sie Abfrageparameter – sogenannte Query-Parameter.

Zum Beispiel liefert diese URL die Wettervorhersage für Minsk:

https://api.open-meteo.com/v1/forecast?latitude=50.45&longitude=30.52&current_weather=true

Schaut man genauer hin, sind nach dem Zeichen ? die Parameter aufgeführt:

  • latitude = 50.45 – Breitengrad,
  • longitude = 30.52 – Längengrad,
  • current_weather = true – wir möchten das aktuelle Wetter.

Manche APIs verlangen außerdem ein spezielles „Passwort“ – einen API-Schlüssel. Dann fügt man ihn als Parameter hinzu, zum Beispiel & apikey = IHR_SCHLUESSEL.

Die Dokumentation des Wetterdienstes finden Sie auf open-meteo.com.

3. Wie sieht eine API-Antwort aus?

Wenn wir eine Anfrage senden, antwortet der Server mit Text: einer JSON-Zeichenkette. Manchmal ist es ein JSON-Objekt, manchmal – ein JSON-Array.

Beispiel einer Wetterantwort:

{
  "latitude": 50.45,
  "longitude": 30.52,
  "current_weather": {
    "temperature": 21.3,
    "windspeed": 5.2,
    "weathercode": 1
  }
}

Beispiel einer Antwort des Dienstes mit den ISS-Koordinaten:

{
  "timestamp": 1717590000,
  "iss_position": {
    "latitude": "48.1234",
    "longitude": "12.5678"
  },
  "message": "success"
}

4. Erstes Beispiel: Wir holen das Wetter

Versuchen wir, einen kleinen Codeausschnitt zu schreiben, der das kostenlose Wetter-API open-meteo.com aufruft und die Antwort einfach auf der Konsole ausgibt.

String url = "https://api.open-meteo.com/v1/forecast?latitude=50.45&longitude=30.52&current_weather=true";

HttpClient client = HttpClient.newHttpClient();
HttpRequest req = HttpRequest.newBuilder(URI.create(url)).GET().build();
HttpResponse<String> resp = client.send(req, HttpResponse.BodyHandlers.ofString());

System.out.println("HTTP-Status: " + resp.statusCode());
System.out.println("Antwort des Servers:");
System.out.println(resp.body());

Hier machen wir Folgendes:

  1. Wir erstellen einen HttpClient-Client.
  2. Wir bauen eine GET-Anfrage (HttpRequest).
  3. Wir senden sie: client.send.
  4. Wir erhalten die Antwort als String: HttpResponse<String>.

Wenn alles funktioniert, sehen Sie den HTTP-Status 200 und ein JSON mit dem Wetter.

5. Zweites Beispiel: Wir verfolgen die ISS

Wenden wir uns nun dem API open-notify.org zu, das in Echtzeit die Koordinaten der Internationalen Raumstation (ISS) zeigt.

String url = "http://api.open-notify.org/iss-now.json";

HttpClient client = HttpClient.newHttpClient();
HttpRequest req = HttpRequest.newBuilder(URI.create(url)).GET().build();
HttpResponse<String> resp = client.send(req, HttpResponse.BodyHandlers.ofString());

System.out.println(resp.body());

Das Ergebnis wird so aussehen:

{
  "timestamp": 1717590000,
  "iss_position": {
    "latitude": "48.1234",
    "longitude": "12.5678"
  },
  "message": "success"
}

Soeben haben Sie die genauen Koordinaten der Station erhalten, die über der Erde kreist. Wenn Sie diesen Code in einer Minute erneut ausführen – die Zahlen werden bereits andere sein.

6. Nützliche Details

Wenn Sie anfangen, mit APIs zu arbeiten, sollten Sie einige Dinge unbedingt beachten.

Erstens: Schauen Sie immer auf den Antwortstatus: resp.statusCode(). Ist es 200 – alles gut. Bei 404 ist die Adresse falsch. 401 – es wird ein Schlüssel benötigt. 429 – Sie stellen zu viele Anfragen.

Zweitens: Denken Sie an Limits. Kostenlose Dienste begrenzen die Anfragerate, damit niemand ihre Server überlastet.

Drittens: JSON sieht nicht immer hübsch aus. Manchmal ist es eine lange einzeilige Zeichenkette – das ist normal. Später lernen wir, Bibliotheken (Jackson, Gson) einzubinden, um JSON in Felder zu „parsen“ und damit wie mit Objekten zu arbeiten.

Noch ein kleines Experiment

Nehmen wir ein API, das einen zufälligen Fakt über Katzen liefert:

String url = "https://catfact.ninja/fact";

HttpClient client = HttpClient.newHttpClient();
HttpRequest req = HttpRequest.newBuilder(URI.create(url)).GET().build();
HttpResponse<String> resp = client.send(req, HttpResponse.BodyHandlers.ofString());

System.out.println(resp.body());

Führen Sie diesen Ausschnitt mehrmals aus, und Sie erhalten jedes Mal ein neues JSON mit irgendeinem Fakt.

1
Aufgabe
JAVA 25 SELF, Level 12, Lektion 5
Gesperrt
Abrufen und Anzeige der JSON-Antwort für das Wetter
Abrufen und Anzeige der JSON-Antwort für das Wetter
1
Aufgabe
JAVA 25 SELF, Level 12, Lektion 5
Gesperrt
Ermitteln und Ausgeben des API-Antwortstatus
Ermitteln und Ausgeben des API-Antwortstatus
1
Aufgabe
JAVA 25 SELF, Level 12, Lektion 5
Gesperrt
Die Antwort des Servers prüfen, bevor wir sie ausgeben 🚦
Die Antwort des Servers prüfen, bevor wir sie ausgeben 🚦
1
Aufgabe
JAVA 25 SELF, Level 12, Lektion 5
Gesperrt
Ermitteln und Ausgeben der ISS-Koordinaten aus einer JSON-Antwort
Ermitteln und Ausgeben der ISS-Koordinaten aus einer JSON-Antwort
1
Umfrage/Quiz
Wir verfolgen die ISS, Level 12, Lektion 5
Nicht verfügbar
Wir verfolgen die ISS
Wir verfolgen die ISS
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION