© Excellent backgrounds/Shutterstock.com
RESTful Web Services mit JAX-RS

Nutzen, nicht nur bereitstellen


Java ist wahrscheinlich die üblichste Plattform, um REST-Services anzubieten. Aber in vielen Java-Anwendungen sollen diese natürlich auch benutzt werden. Und es kann auch passieren, dass REST-Services sich auf weitere REST-Services stützen, um ihre Daten bereitzustellen.

Video: REST 2015

Ein typischer Fehler von uns Java-Programmierern ist es, alles selbst zu tun. Wir können etwa URL.openStream() ausführen, die Antwort in einen String lesen und die Daten dann händisch aus dem String parsen. Das ist auf jeden Fall möglich und sogar ziemlich leicht, selbst mit nur den Standard-JDK-Libraries. Aber es gibt bessere Wege, zum Ziel zu gelangen.

Das Java-Ökosystem hat eine Menge exzellenter Libraries, viele wirklich gut durchdachte Standards und oftmals sogar mehrere Implementierungen derselben, die zueinander im Wettbewerb stehen. JAX-RS ist eine solche Library, die REST-Services zur Verfügung stellt. Das ist bei den Java-EE-Entwicklern wohlbekannt. Aber die Spezifikation enthält auch ein etwas weniger bekanntes Programmierinterface zum Benutzen von REST-Services. Darauf zurückzugreifen hilft uns, Code schneller zu schreiben und leichter zu warten.

Meine Beispielanwendung ist eine kleine Java-EE-­Anwendung, die Wettervorhersagen von ­openweathermap.org in POJOs (Plain Old Java Objects) einliest und sie dann mit einer einfachen Vaadin-Benutzeroberfläche im Browser anzeigt. Der eigentliche Kern dieses Tutorials ist keinesfalls Java-EE- oder auch nur Vaadin-spezifisch. Es geht darum, eine Menge Boilerplate-Code zu vermeiden, um sich auf das Wesentliche zu konzentrieren. Obwohl JAX-RS Teil der Java-EE-Spezifikation ist, ist es nicht von anderen Teilen der Java EE abhängig. Das heißt, wenn eine Applikation nicht in einem Java-EE-Container läuft, kann man einfach eine JAX-RS-Implementierung wie Jersey und eine passende Object Mapper Library hinzufügen und das Beispiel entsprechend seiner Bedürfnisse anpassen. Wenn man mit einem Spring-basierten Stack arbeitet, sollte man sich stattdessen vielleicht besser das RestTemplate-API ansehen, das so ziemlich dasselbe macht wie ein JAX-RS-Client. Der Prozess lässt sich in drei Schritte aufspalten: die Modellierung, die Verarbeitung und die Benutzung.

Schritt 1: Modellierung der Daten

Üblicherweise stellt der Dienst Daten entweder im XML- oder im JSON-Format bereit. Wenn die Antworten nun nicht völlig trivial sind (z. B. eine Liste von Strings), spart man keine Zeit, wenn man direkt auf sie zugreift. Low-Level-Programmiersc...

Exklusives Abo-Special

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang