# API einbinden



## Half_NO_oB (10. Apr 2017)

Guten Tag Leute
Ich habe bereits einige Erfahrungen mit Java gemacht und arbeite mich gerade in JavaFX ein. Ich möchte gerne eine Applikation erstellen, die Lyrics von der bekannten Seite "genius.com" heraussucht und darstellt. Ich arbeite mit dem IDE Eclipse.
Genius stellt dazu eine eigene API mit diversen Endpoints zur Verfügung (https://docs.genius.com/).  Mit API's habe ich noch kaum Erfahrung und aus der Dokumentation werd ich überhaupt nicht schlau . Wie muss ich meine Entwicklungsumgebung einrichten um Queries zu machen?
Besten Dank und schönen Tag noch
Half


----------



## looparda (10. Apr 2017)

Wenn ich es richtig sehe gibt es keine richtige Java API für den Dienst. Die API, die dort beschrieben wird ist eine REST API. Du kannst dort also die genannten URI aufrufen und bekommst vom Server eine Antwort in JSON. Zur Verarbeitung des JSON gibt es viele Möglichkeiten:

a) Die Antwort kannst du manuell auseinander nehmen mit Hilfe von einer JSON Parse Library wie GSON oder Simple JSON. Also einzeln durch die Response iterieren und nur die Werte auslesen, die dich interessieren.

b) Ein Anderer Ansatz ist es das JSON in Java Klassen (respektive Objekte) zu gießen. Das nennt sich unmarshallen. Im einfachsten Fall ist das mit GSON:

```
Artist a = gson.fromJson(geniusResponseJSON, Artist.class);
```
oder mit der Library Jackson.

c) Du erstellst JAX-RS Client Interfaces für alle Routen der REST API. Dann kannst du mit jeder JAX-RS konformer Library diese API konsumieren. Siehe RESTEasy, Jersey (Die Funktionsweise lässt sich am besten mit dem GitHub Repo nachvollziehen. Der Provider Ansatz gefällt mir sehr gut, da sie schlank, einfach und flexibel ist. - Allerdings wird dort das Unmarshalling manuell gemacht).

Jede Variante hat ihre Vor und Nachteile. Was du wählst hängt davon ab ob du nur eben qucik&dirty zum Ziel kommen willst und nur 1-2 Sachen von der API abfragen willst oder ob du es sauber programmieren willst.
In jedem Fall kann ich dir empfehlen dich mit allen Möglichkeiten auseinanderzusetzen. REST API sind weit verbreitet und immer mehr Dienste bieten Informationen darüber an.


----------



## mrBrown (11. Apr 2017)

Die vierte Alternative wäre sowas wie Spring RestTemplate, das macht die API extrem einfach zu benutzen


----------



## JuKu (11. Apr 2017)

Ich persönlich fände ja die JSON Library am einfachsten.


```
JSONObject json = new JSONObject(strFromWebsite);

String name = json.getString("name");
String value = json.getString("key");
```

Damit kannst du die Daten sehr schnell parsen.
Ansonsten brauchst du noch einen HTTP Client, damit du überhaupt erst an diese Daten (den Webseiten Content / String) kommst.


----------



## mrBrown (11. Apr 2017)

JuKu hat gesagt.:


> Ansonsten brauchst du noch einen HTTP Client, damit du überhaupt erst an diese Daten (den Webseiten Content / String) kommst.


Die braucht er nicht ansonsten, sondern in jedem Fall.


----------



## JuKu (11. Apr 2017)

"Ansonsten" war eig. als "Desweiteren" gemeint.


----------

