Dropwizard Tutorial-Hello World Example

Dropwizard è un framework Java open source per il rapido sviluppo di API REST. Dropwizard è una sorta di ecosistema che contiene tutte le dipendenze (come Jersey, jackson o jetty) in bundle in un unico pacchetto o può essere aggiunto come modulo separato. Se non si utilizza dropwizard, si finirà per raccogliere tutte le dipendenze da soli e spesso si verificano problemi di caricamento della classe a causa della mancata corrispondenza della versione tra varie librerie java. Dropwizard risolve questo problema per te e riunisce librerie stabili e mature in un pacchetto semplice e leggero che ti consente di concentrarti su come fare le cose. Impariamo ad usare dropwizard per creare API REST-passo dopo passo.

Table of ContentsLibraries included inside dropwizardSetup dropwizard with mavenCreate REST Application ClassCreate REST Resource and APIsBuild Resource RepresentationsRequest ValidationVerify REST APIs
Avrai bisogno di Java 8 per eseguire gli esempi forniti in questo codice che sono sviluppati usando dropwizard versione 1.0.0.

Librerie incluse all’interno di dropwizard

Una volta che si include dropwizard nel progetto, si ottengono le seguenti librerie aggiunte al classpath.

  • Jersey-Per la creazione di applicazioni web RESTful.
  • Jetty – Dropwizard utilizza la libreria HTTP Jetty per incorporare un server HTTP direttamente nel progetto.
  • Jackson-Per oggetto da / a conversione JSON. Permette di esportare i modelli di dominio direttamente con annotazioni JAXB.
  • Guava-strutture dati immutabili altamente ottimizzate per accelerare lo sviluppo.
  • Logback e SLF4j – per la registrazione performante e flessibile.
  • Hibernate Validator – un semplice framework dichiarativo per convalidare l’input dell’utente e generare messaggi di errore utili e i18n-friendly.
  • Apache HTTPClient – Per l’interazione di basso e alto livello con altri servizi web.
  • JDBI – il modo più semplice per utilizzare un database relazionale con Java.
  • Liquidbase-per tenere sotto controllo lo schema del database durante tutto il ciclo di sviluppo e rilascio.
  • FreeMarker – sistemi di template.
  • Baffi-semplici sistemi di template per applicazioni più rivolte all’utente.
  • Joda Time-libreria molto completa e sana per la gestione di date e orari.

Imposta dropwizard con maven

Il nostro progetto sarà basato sull’archetipo maven-archetype-quickstart. È possibile creare il progetto utilizzando il prompt dei comandi o utilizzare eclipse per creare un semplice progetto java maven.

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

Il progetto generato avrà anche il file pom.xml. Aggiungi la dipendenza dropwizard lì.

Questo scaricherà tutti i file jar e li aggiungerà nel tuo classpath. Per aggiungere il supporto di build e package al nostro progetto, useremo il plugin maven-shade, che ci permetterà di confezionare completamente il nostro progetto, insieme alle sue dipendenze, in un singolo file JAR autonomo (Fat/Uber JAR) che può essere distribuito ed eseguito così com’è.

Pom completo.il file xml assomiglia a questo.

Crea classe di applicazione REST

La classe di applicazione è il punto di ingresso per qualsiasi applicazione dropwizard. Deve estendere la classe io.dropwizard.Application e implementare i metodi initialize(Bootstrap<Configuration>) e run(Configuration, Environment). Preparano l’ambiente di runtime dell’applicazione.

Per richiamare il metodo run, è necessario disporre del metodo public static void main(String args) {}, che verrà richiamato dal comando java -jar quando si esegue l’applicazione come file jar.

Per eseguire il file JAR, aggiungiamo l’argomento server al comando che avvia il server HTTP incorporato (Jetty) per eseguire il nostro servizio.

java -jar target\DropWizardExample.jar server

Il server embedded Jetty di Dropwizard proverà a collegarsi alle porte 8080 e 8081 per impostazione predefinita. La porta 8080 viene utilizzata dal server per servire le richieste HTTP in entrata all’applicazione, mentre 8081 viene utilizzata dall’interfaccia di amministrazione di Dropwizard.

Abbiamo anche importato le classi necessarie Logger e LoggerFactory per costruire un’istanza di Logger che potremmo usare per le nostre esigenze di registrazione.

Crea risorsa REST e API

Ora, dopo aver aggiunto classe bootstrap applicazione, è ora possibile aggiungere risorse REST contenenti API REST. In questo esempio, ho creato e l’applicazione di gestione dei dipendenti – quindi ha API per creare/aggiornare / eliminare i record dei dipendenti. Questa classe sarà responsabile della gestione delle richieste HTTP e della generazione delle risposte JSON.

Poiché abbiamo Jersey nel nostro classpath, lo useremo per creare API REST.

Per imitare il DB, ho creato la classe EmployeeDB che memorizza i record e gli aggiornamenti dei dipendenti in memoria.

Crea rappresentazioni di risorse

La rappresentazione è ciò che contiene i dati e serializzato in JSON. È un modello per un’applicazione riposante. Quando si utilizza Jersey con Jackson, tutto ciò che serve per creare una rappresentazione delle risorse è un semplice POJO che segue gli standard java bean. Jackson costruisce la stringa JSON in modo ricorsivo in base ai metodi getter di ogni classe e al loro tipo di ritorno.

Qualsiasi istanza del tipo java.util.List verrà convertita in un array JSON.

Se necessario, in alcuni casi, è possibile impedire che una proprietà faccia parte della rappresentazione JSON aggiungendo l’annotazione @JsonIgnore al suo getter.

Convalida della richiesta

Quando si accettano richieste PUT e POST, è necessario convalidare il contenuto dell’entità inviato dall’utente nel corpo della richiesta. Dropwizard utilizza hibernate validator per questo scopo. L’aggiunta della convalida richiede i seguenti passaggi.

Verifica le API REST

Ora, quando abbiamo creato e aggiunto le convalide per le API REST, testiamolo.

Crea l’applicazione uber jar file

> mvn clean package

Avvia l’applicazione in jetty server

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

Accedi all’URIhttp://localhost:8080/employees

Questo restituirà la raccolta dei dipendenti e le relative intestazioni di risposta.

Dropwizard-Esempio di richiesta GET– 1

URI di accessohttp://localhost:8080/employees/1

Ciò restituirà il record del dipendente con id 1.

Dropwizard-Esempio di richiesta GET– 2

Inviato HTTP PUT http://localhost:8080/employees / 1 con dati di richiesta non validi

Riceverai messaggi di convalida.

Dropwizard-Validation Example

Sent HTTP PUT http://localhost:8080/employees/1 with correct data

Employee record will be updated successfully.

Dropwizard-PUT request Example

Allo stesso modo, è possibile testare altre API e scenari.

You might also like

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.