Dropwizard este un cadru Java open source pentru dezvoltarea rapidă a API-urilor REST. Dropwizard este un fel de ecosistem care conține toate dependențele (cum ar fi Jersey, jackson sau jetty) incluse într-un singur pachet sau pot fi adăugate ca modul separat. Dacă nu utilizați dropwizard, veți ajunge să colectați singur toate dependențele și de multe ori rezultă probleme de încărcare a clasei din cauza nepotrivirii versiunii între diferite biblioteci java. Dropwizard rezolva această problemă pentru tine, și trage împreună biblioteci stabile, mature într-un pachet simplu, lumina-greutate, care vă permite să se concentreze pe obtinerea lucruri de facut. Să învățăm să folosim dropwizard pentru a construi API – uri REST-pas cu pas.
Table of ContentsLibraries included inside dropwizardSetup dropwizard with mavenCreate REST Application ClassCreate REST Resource and APIsBuild Resource RepresentationsRequest ValidationVerify REST APIs
- biblioteci incluse în dropwizard
- Setup dropwizard cu maven
- creați clasa de aplicații REST
- creați resurse REST și API-uri
- construi reprezentări de resurse
- validarea solicitării
- verificați API-urile REST
- Build cerere uber fișier jar
- start cerere în jetty server
- acces URI http://localhost:8080/employees
- uri de acces http://localhost:8080/employees/1
- Sent HTTP PUT http://localhost:8080/employees / 1 cu date de solicitare nevalide
- trimis HTTP PUT http://localhost:8080/employees/1 cu date corecte
biblioteci incluse în dropwizard
după ce includeți dropwizard în proiectul dvs., veți obține următoarele biblioteci adăugate la calea de clasă.
- Jersey – pentru construirea de aplicații Web odihnitoare.
- Jetty – Dropwizard utilizează biblioteca http Jetty pentru a încorpora un server HTTP direct în proiectul dumneavoastră.
- Jackson – pentru obiect la/de la conversie JSON. Acesta permite de a exporta modelele de domeniu direct cu adnotări JAXB.
- Guava – structuri de date imuabile extrem de optimizate pentru a accelera dezvoltarea.
- Logback și SLF4j – pentru logare performantă și flexibilă.
- Hibernate Validator – un cadru declarativ ușor pentru validarea de intrare de utilizator și generarea de mesaje de eroare utile și i18n-friendly.
- Apache HTTPClient – atât pentru interacțiunea la nivel scăzut, cât și la nivel înalt cu alte servicii web.
- JDBI – cel mai simplu mod de a utiliza o bază de date relațională cu Java.
- Liquidbase – pentru a menține schema bazei de date sub control pe tot parcursul ciclului de dezvoltare și eliberare.
- sisteme FreeMarker – templating.
- Mustache – sisteme templating simple pentru mai multe aplicații orientate spre utilizator.
- Joda Time – bibliotecă foarte completă și sănătoasă pentru manipularea datelor și orelor.
Setup dropwizard cu maven
proiectul nostru se va baza pe Maven-arhetip-QuickStart arhetip. Puteți crea proiectul fie folosind promptul de comandă sau de a folosi eclipse pentru a crea simplu proiect java Maven.
mvn archetype:generate -DgroupId=com.howtodoinjava.demo -DartifactId=DropWizardExample -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
proiectul generat va avea și fișierul pom.xml
. Adăugați dependență dropwizard acolo.
aceasta va descărca toate fișierele jar și le va adăuga în classpath. Pentru a adăuga build și pachet de sprijin pentru proiectul nostru, vom folosi plugin-ul maven-shade, care ne va permite să pachet proiectul nostru complet, împreună cu dependențele sale, într-un singur fișier standalone JAR (Fat/Uber JAR), care pot fi distribuite și executate ca atare.
pom complet.fișierul xml arată astfel.
creați clasa de aplicații REST
clasa de aplicații este punctul de intrare pentru orice aplicație dropwizard. Trebuie să extindă clasa io.dropwizard.Application
și să implementeze metodele initialize(Bootstrap<Configuration>)
și run(Configuration, Environment)
. Ei pregătesc mediul de rulare al aplicației.
pentru a invoca metoda run, va trebui să aveți metoda public static void main(String args) {}
, care va fi invocată de comanda java -jar
atunci când executați aplicația ca fișier jar.
pentru executarea fișierului JAR, adăugăm argumentul serverului la comanda care pornește serverul HTTP încorporat (Jetty) pentru a rula serviciul nostru.
java -jar target\DropWizardExample.jar server
Dropwizard ‘ s embedded Jetty server va încerca să se lege la porturile 8080 și 8081 în mod implicit. Portul 8080 este utilizat de server pentru a servi cererile HTTP primite către aplicație, în timp ce 8081 este utilizat de interfața de administrare a Dropwizard.
am importat, de asemenea, clasele necesare Logger
și LoggerFactory
pentru a construi o instanță Logger am putea folosi pentru nevoile noastre de logare.
creați resurse REST și API-uri
acum, când ați adăugat clasa bootstrap aplicație, puteți adăuga acum resurse REST care conțin API-uri REST. În acest exemplu, am creat și aplicația de gestionare a angajaților-deci are API-uri pentru crearea/actualizarea/ștergerea înregistrărilor angajaților. Această clasă va fi responsabilă pentru gestionarea cererilor HTTP și generarea răspunsurilor JSON.
așa cum avem Jersey în classpath nostru, vom folosi pentru a construi API-uri de odihnă.
pentru imitarea DB, am creat EmployeeDB
clasa care stochează înregistrările angajaților și actualizările în memorie.
construi reprezentări de resurse
reprezentarea este ceea ce deține datele și serializate în JSON. Este modelul pentru aplicarea odihnitor. Atunci când se utilizează Jersey cu Jackson, tot ce ai nevoie pentru a construi o reprezentare a resurselor este – un simplu Pojo următoarele standarde java bean. Jackson construiește șirul JSON recursiv în funcție de metodele getter ale fiecărei clase și de tipul lor de întoarcere.
java.util.List
va fi convertită într-o matrice JSON. dacă este necesar în unele cazuri, puteți împiedica o proprietate să facă parte din reprezentarea JSON adăugând adnotarea @JsonIgnore
la getter.
validarea solicitării
când acceptați solicitările PUT
și POST
, va trebui să validați conținutul entității trimise de utilizator în corpul solicitării. Dropwizard utilizează Hibernate validator în acest scop. Adăugarea validării necesită următorii pași.
verificați API-urile REST
acum, când am creat și adăugat validări pentru API-urile REST, să testăm acest lucru.
Build cerere uber fișier jar
> mvn clean package
start cerere în jetty server
> java -jar target\DropWizardExample-0.0.1-SNAPSHOT.jar server
acces URI http://localhost:8080/employees
acest lucru se va întoarce de colectare a angajaților și anteturile de răspuns aferente.
uri de acces http://localhost:8080/employees/1
aceasta va returna înregistrarea angajatului cu id-ul 1.
Sent HTTP PUT http://localhost:8080/employees / 1 cu date de solicitare nevalide
veți primi mesaje de validare.
trimis HTTP PUT http://localhost:8080/employees/1 cu date corecte
înregistrare angajat va fi actualizat cu succes.
în același mod, puteți testa alte API-uri și scenarii.