Java EE 7: Geschäftsanwendungen

RESTful Service

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Mit Hilfe eines RESTful Services kann eine Applikation anderen Applikationen oder Webseiten Daten bereitstellen. Hier lernen Sie, RESTful Services einzusetzen und implementieren einen RESTful Service, der eine Liste aller Kunden zurückgibt.

Transkript

Der Web-Layer eine Applikation ist die Schnittstelle zum Benutzer. Hier gibt es Webseiten und hier gibt es auch Web beziehungsweise RESTful Services. In diesem Video werden wir uns mit der Implementierung eines RESTful Services auseinandersetzen, den wir in unserer Applikation nutzen werden, um die Liste der Kunden abzurufen. Wir werden dies dann später verwenden, um eine Übersichtsseite zu generieren und dort eine höhere Performance zu haben, als wenn wir die ganzen Daten direkt beim Abruf der Seite vom Server laden würden. RESTful Services als solches sind eine Konvention keine Spezifikation. Der Gedanke dabei ist, dass alles identifiziert und per HTTP-Request angesprochen werden kann. Die Art des HTTP-Requests entscheidet dabei, wie mit der jeweiligen Ressource umgegangen wird. Es gibt verschiedene Arten von HTTP-Requests, GET-Requests, die dienen im Zweck eine Ressource, also Daten abzurufen. Ein POST-Requests dient dem Anlegen einer Ressource oder eines Datensatzes. Ein PUT-Requests wird benutzt, um eine Ressource oder ein Datensatz upzudaten und ein DELETE-Request löscht eine Ressource oder ein Datensatz. Damit das Ganze auf Ebene der Java eher funktionieren kann, benötigen wir die PATH-Annotation. Ein RESTful Service ist eine normale Java-Klasse, die mit der PATH-Annotation versehen ist. Die Methoden, die von diesem RESTful Service aus angeboten werden, sind ganz normale Methoden, die öffentlich sind und sie verfügen über eine GET-, POST-, PUT- oder DELETE-Annotation. Wir können mit Hilfe der PATH-Annotation, dann einen Basispfad auf Klassenebene definieren und die Methoden können einen untergeordneten lokalen Pfad bekommen. Die Rückgabe einer Methode, die über ein RESTful Service angesprochen wird, kann in verschiedenen Formaten geschehen, generell sind alle möglichen Formate denkbar. Wir können dies hier doch mit Hilfe der Produces-Annotation einschränken, beziehungsweise genauer spezifizieren. Die Produces-Annotation eines RESTful Services gibt nämlich an, welche Arten von Rückgaben möglich sind. Sollten mehrere Arten von Rückgaben denkbar sein, denn wird die tatsächliche Rückgabe vom Client über dessen HTTP ACCEPT Header bestimmt und der Server wird versuchen genau das richtige Format zu erzeugen. Damit so ein RESTful Service funktionieren kann, muss er konfiguriert werden. Zu diesem Zweck benötigen wir eine Ableitung der Application- Klasse, die sich in unserem Webarchiv befinden muss. Diese Ableitung der Application- Klasse ist annotiert mit der ApplicationPath Annotation und da geben wir einen Basispfad an, über den dann hinterher der RESTful Service als solches erreichbar ist. Wir werden nun ein RESTful Service definieren, der es uns erlaubt eine Liste aller unseren Kunden abzurufen. Diese Liste wird genutzt, um später eine Übersichtsseite mit Daten zu versorgen. In unserem Webprojekt, das hier bisher noch über keinerlei Inhalte verfügt, legen wir nun eine neue Klasse an. Diese Klasse wird sich im Package com.cm.web.rest befinden und sie heißt ApplicationConfiguration. Sie erbt von der Basisklasse Application, die sich im Package javax.ws.rs.core befindet. Hier definieren wir nun mit Hilfe der ApplicationPath Annotation, den Basispfad unseres RESTful Services nämlich api/v1. Diese Versionsangabe ist optional, hat sich aber eingebürgert. Nun können wir den eigentlichen REST Service implementieren. Dies machen wir, indem wir eine neue Klasse in so ein Package anlegen und wir nennen diese Klasse CustomersEndpoint. Und wir annotieren sie mit der Path-Annotation und wir geben hier den virtuellen Pfad an, unter dem das erreichbar sein soll, nämlich unter dem virtuellen Pfad customers. Wir benötigen nun in dieser Klasse eine Referenz auf unser CustomerDAO EJB. Diese Referenz müssen wir erstmal dem Projekt bekannt machen. Dies machen wir über das Kontextmenü und dort die Option Properties bei dem Projekt, gehen in den Bereich Java Build Path, klicken hier auf den Reiter Projects, sagen Add und fügen ein Verweis auf CustomerManagementEJB hinzu. Wir achten darauf, das können wir im Bereich Order and Export sehen, dass hier kein Häkchen vor CustomerManagementEJB gesetzt wird. Ansonsten würde nämlich die Komponente auf den Server mit deployed werden und sie kommt ja schon über die EAR Application mit auf den Server, so dass wir sie dann doppelt hätten, das wollen wir natürlich nicht. So nun können wir eine Referenz auf unser CustomerDAO hinzufügen. Das machen wir, indem wir es uns initiieren lassen in die Variable CustomerDAO und diese Injection nehmen wir mit Hilfe der EJB-Annatation vor. Nun können wir die Methode definieren, die vom REST Service aus angeboten wird. Das ist eine öffentliche Methode, in der wir eine Liste vom Typ Customer zurückgeben werden. Und diese Methode nennen wir getALL. Und hier machen wir nichts anderes als aus unserem CustomerDAO über die Methode getALLCustomers die Kundenliste abzurufen und zurückzugeben. Um die Methode nun über den RESTful Service erreichbar zu machen, annotieren wie sie zunächst einmal mit der GET-Annotation, um zu sagen, dass sie per GET-Request erreicht werden kann. Wir geben ihr per PATH-Annotation auch noch einen schöneren Namen, nämlichen List und wir drücken aus mit Hilfe der Produces-Annotation aus dem javax.ws.rs Package, dass wir hier Rückgaben vom Medientyp Application-JSON generieren werden. Damit ist für JAX-RS klar, dass es hier einfach immer eine JSON-Serialisierung vornehmen soll. Damit haben wir diesen RESTful Service und sein Endpoint fertig implementiert. Sollten wir die Applikation nun hier doch starten, werden wir ganz schnell feststellen, dass wir noch eine Kleinigkeit vergessen haben, nämlich die Stateless-Annotation oder eine vergleichbare Annotation die dafür sorgt, dass diese Komponente, die wir eben definiert haben unter Verwaltung von CDI beziehungsweise von EJB Dependency Injection gestellt wird, damit nämlich das Injizieren unseren abhängigen CustomerDAO Instanz hier funktionieren kann. Nun ist das Ganze wirklich fertig und wir können die Applikation einmal auf dem Server starten. Die Applikation wird gestartet. Die Applikation wird gestartet. Dies kann einige Sekunden dauern und nachdem der Start abgeschlossen ist, können wir einmal das Fiddler Tool starten, um zu schauen, ob unser Endpoint als solches erreichbar ist und wie er sich verhält. Hier im Fiddler Tool kann ich über den Reiter Composer im Bereich Parsed eine Adresse eingeben. Das ist die Adresse unserer Webapplikation, die liegt unterhalb von CustomerManagementWeb, das ist nämlich der Name des Webprojektes. Dann haben wir hier den virtuellen Pfad api/v1, das ist das, was wir in Applikations-Konfigurationsdatei angegeben haben. Der nächste Pfad Bestandteil des Customers und so gut der letzte Name der Methode List. Wenn wir das Ganze aufrufen, werden wir nach einigen Sekunden eine Rückgabe erhalten. Diese Rückgabe, wenn wir sie uns in RAW-Format anschauen, beinhaltet genau einen Datensatz zukünftig sicherlich mehr und sie ist in JSON-Format, wie wir hier problemlos sehen können. Damit haben wir die Implementierung unseres RESTful Services abgeschlossen und wir haben überprüft, dass er funktioniert. In diesem Video haben wir uns mit RESTful Services auseinandergesetzt. Wir haben im Rahmen unserer Implementierung zunächst einmal eine Applikations-Konfigurationsdatei angelegt, die von der Basisklasse Application erbt und haben hier ein Basispfad definiert, über den RESTfül Service erreichbar ist. Anschließend haben wir den eigentlichen RESTfül Service in der Klasse CustomersEndpoint implementiert. Wir haben ihn mit einer PATH-Annotation versehen, um ihn bekannt zu machen. Es ist eine Stateless Session Bean damit Dependency Injection funktioniert und wir haben die Methode getALL unter dem virtuellen Pfad List angelegt, die gibt uns eine Liste aller Kunden zurück und zwar im Format JSON.

Java EE 7: Geschäftsanwendungen

Verfolgen Sie, wie eine komplette Business-Applikation unter dem Einsatz des gesamten Java-Enterprise-Techologiestacks ensteht.

5 Std. 2 min (39 Videos)
Derzeit sind keine Feedbacks vorhanden...

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!