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¤t_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¤t_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:
- Wir erstellen einen HttpClient-Client.
- Wir bauen eine GET-Anfrage (HttpRequest).
- Wir senden sie: client.send.
- 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.
GO TO FULL VERSION