Dropwizard Tutorial – Hallo Welt Beispiel

Dropwizard ist ein Open-Source-Java-Framework für die schnelle Entwicklung von REST-APIs. Dropwizard ist eine Art Ökosystem, das alle Abhängigkeiten (wie Jersey, Jackson oder Jetty) in einem einzigen Paket enthält oder als separates Modul hinzugefügt werden kann. Wenn Sie Dropwizard nicht verwenden, sammeln Sie am Ende alle Abhängigkeiten selbst und es kommt häufig zu Problemen beim Laden von Klassen, da die Versionen zwischen verschiedenen Java-Bibliotheken nicht übereinstimmen. Dropwizard löst dieses Problem für Sie und vereint stabile, ausgereifte Bibliotheken in einem einfachen, leichten Paket, mit dem Sie sich darauf konzentrieren können, Dinge zu erledigen. Lernen Sie Schritt für Schritt, wie Sie mit Dropwizard REST–APIs erstellen.

Table of ContentsLibraries included inside dropwizardSetup dropwizard with mavenCreate REST Application ClassCreate REST Resource and APIsBuild Resource RepresentationsRequest ValidationVerify REST APIs
Sie benötigen Java 8, um die in diesem Code angegebenen Beispiele auszuführen, die mit dropwizard Version 1.0.0 entwickelt wurden.

In Dropwizard enthaltene Bibliotheken

Sobald Sie Dropwizard in Ihr Projekt aufgenommen haben, werden Ihrem Klassenpfad folgende Bibliotheken hinzugefügt.

  • Jersey – Zum Erstellen von RESTful-Webanwendungen.
  • Jetty – Dropwizard verwendet die Jetty HTTP-Bibliothek, um einen HTTP-Server direkt in Ihr Projekt einzubetten.
  • Jackson – Für Objekt zu / von JSON-Konvertierung. Es ermöglicht Ihnen, Ihre Domänenmodelle direkt mit JAXB-Annotationen zu exportieren.
  • Guava – hochoptimierte unveränderliche Datenstrukturen zur Beschleunigung der Entwicklung.
  • Logback und SLF4j – für performantes und flexibles Logging.
  • Hibernate Validator – ein einfaches deklaratives Framework zur Validierung von Benutzereingaben und zum Generieren hilfreicher und i18n-freundlicher Fehlermeldungen.
  • Apache HttpClient – Für die Interaktion auf niedriger und hoher Ebene mit anderen Webdiensten.
  • JDBI – der einfachste Weg, eine relationale Datenbank mit Java zu verwenden.
  • Liquidbase – um Ihr Datenbankschema während Ihres gesamten Entwicklungs- und Release-Zyklus in Schach zu halten.
  • FreeMarker – Template-Systeme.
  • Schnurrbart – einfache Vorlagensysteme für benutzerorientierte Anwendungen.
  • Joda Time – sehr vollständige und vernünftige Bibliothek für den Umgang mit Datums- und Uhrzeitangaben.

Dropwizard mit maven einrichten

Unser Projekt basiert auf dem Archetyp maven-archetype-quickstart. Sie können das Projekt entweder über die Eingabeaufforderung erstellen oder Eclipse verwenden, um ein einfaches Maven-Java-Projekt zu erstellen.

mvn archetype:generate -DgroupId=com.howtodoinjava.demo -DartifactId=DropWizardExample -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

Generiertes Projekt wird auch pom.xml Datei haben. Fügen Sie dort die Dropwizard-Abhängigkeit hinzu.

Dadurch werden alle JAR-Dateien heruntergeladen und Ihrem Klassenpfad hinzugefügt. Um unserem Projekt Build- und Paketunterstützung hinzuzufügen, verwenden wir das Maven-Shade-Plugin, mit dem wir unser Projekt zusammen mit seinen Abhängigkeiten vollständig in eine einzelne eigenständige JAR-Datei (Fat / Uber JAR) packen können verteilt und ausgeführt wie es ist.

Komplettes pom.XML-Datei so aussehen.

REST-Anwendungsklasse erstellen

Die Anwendungsklasse ist der Einstiegspunkt für jede Dropwizard-Anwendung. Es muss die Klasse io.dropwizard.Application erweitern und die Methoden initialize(Bootstrap<Configuration>) und run(Configuration, Environment) implementieren. Sie bereiten die Laufzeitumgebung der Anwendung vor.

Um die run-Methode aufzurufen, benötigen Sie die public static void main(String args) {} -Methode, die vom Befehl java -jar aufgerufen wird, wenn Sie die Anwendung als JAR-Datei ausführen.

Um die JAR-Datei auszuführen, fügen wir dem Befehl, der den eingebetteten HTTP-Server (Jetty) startet, das Argument server hinzu, um unseren Dienst auszuführen.

java -jar target\DropWizardExample.jar server

Dropwizards eingebetteter Jetty-Server versucht standardmäßig, an die Ports 8080 und 8081 zu binden. Port 8080 wird vom Server verwendet, um eingehende HTTP-Anforderungen an die Anwendung zu senden, während 8081 von der Dropwizard-Verwaltungsschnittstelle verwendet wird.

Wir haben auch die notwendigen Klassen Logger und LoggerFactory importiert, um eine Logger-Instanz zu erstellen, die wir für unsere Logging-Anforderungen verwenden könnten.

REST-Ressource und APIs erstellen

Wenn Sie nun die Bootstrap-Klasse der Anwendung hinzugefügt haben, können Sie jetzt REST-Ressourcen hinzufügen, die REST-APIs enthalten. In diesem Beispiel habe ich eine Mitarbeiterverwaltungsanwendung erstellt – sie verfügt also über APIs zum Erstellen / Aktualisieren / Löschen von Mitarbeiterdatensätzen. Diese Klasse ist für die Verarbeitung von HTTP-Anforderungen und die Generierung von JSON-Antworten verantwortlich.

Wie wir Jersey in unserem Klassenpfad haben, werden wir es verwenden, um REST-APIs zu erstellen.

Um die Datenbank zu imitieren, habe ich die Klasse EmployeeDB erstellt, in der Mitarbeiterdatensätze und Aktualisierungen im Speicher gespeichert werden.

Ressourcendarstellungen erstellen

Die Darstellung enthält die Daten und wird in JSON serialisiert. Es ist ein Modell für die RESTful-Anwendung. Wenn Sie Jersey mit Jackson verwenden, benötigen Sie zum Erstellen einer Ressourcendarstellung lediglich ein einfaches POJO nach Java Bean–Standards. Jackson konstruiert die JSON-Zeichenfolge rekursiv gemäß den Getter-Methoden jeder Klasse und ihrem Rückgabetyp.

Jede Instanz des Typs java.util.List wird in ein JSON-Array konvertiert.

In einigen Fällen können Sie verhindern, dass eine Eigenschaft Teil der JSON-Darstellung ist, indem Sie die Annotation @JsonIgnore zu ihrem Getter hinzufügen.

Anforderungsvalidierung

Wenn Sie PUT – und POST -Anforderungen akzeptieren, müssen Sie den vom Benutzer übermittelten Entitätsinhalt im Anforderungstext validieren. Dropwizard verwendet Hibernate Validator für diesen Zweck. Das Hinzufügen der Validierung erfordert die folgenden Schritte.

REST-APIs überprüfen

Wenn wir nun Validierungen für REST-APIs erstellt und hinzugefügt haben, testen wir dies.

Anwendung in JAR-Datei erstellen

> mvn clean package

Anwendung im Jetty-Server starten

> java -jar target\DropWizardExample-0.0.1-SNAPSHOT.jar server

Auf URI zugreifen http://localhost:8080/employees

Dies gibt die Mitarbeitersammlung und die zugehörigen Antwortheader zurück.

Dropwizard – GET Anfrage Beispiel – 1

Zugriffs-URI http://localhost:8080/employees/1

Dies gibt den Datensatz des Mitarbeiters mit der ID 1 zurück.

Dropwizard – GET Anfrage Beispiel – 2

Gesendet HTTP PUT http://localhost:8080/employees /1 mit ungültigen Anforderungsdaten

Sie erhalten Validierungsnachrichten.

Dropwizard – Validierungsbeispiel

Gesendetes HTTP PUT http://localhost:8080/employees /1 mit korrekten Daten

Mitarbeiterdatensatz wird erfolgreich aktualisiert.

Dropwizard – PUT request Example

Auf die gleiche Weise können Sie andere APIs und Szenarien testen.

You might also like

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.