Dropwizard is een open source Java framework voor de snelle ontwikkeling van REST API ‘ s. Dropwizard is een soort ecosysteem dat alle afhankelijkheden bevat (zoals Jersey, jackson of jetty) gebundeld in één pakket of kan worden toegevoegd als aparte module. Als u dropwizard niet gebruikt, zult u uiteindelijk zelf alle afhankelijkheden verzamelen en het resulteert vaak in problemen met het laden van de klasse als gevolg van versie mismatch tussen verschillende java-bibliotheken. Dropwizard los dit probleem voor u op, en brengt stabiele, volwassen bibliotheken samen in een eenvoudig, lichtgewicht pakket waarmee u zich kunt concentreren op het krijgen van dingen gedaan. Laten we leren om dropwizard gebruiken om REST API ‘ s te bouwen – stap voor stap.
Table of ContentsLibraries included inside dropwizardSetup dropwizard with mavenCreate REST Application ClassCreate REST Resource and APIsBuild Resource RepresentationsRequest ValidationVerify REST APIs
- bibliotheken die deel uitmaken van dropwizard
- dropwizard instellen met maven
- REST toepassingsklasse
- Create REST Resource and API ‘s
- Build Resource Representations
- validatie van aanvragen
- Verify REST API ‘s
- build applicatie uber jar-bestand
- start applicatie in jetty-server
- Access URI http://localhost:8080/employees
- toegang-URI http://localhost:8080/employees/1
- verzonden HTTP PUT http://localhost:8080/employees / 1 met ongeldige aanvraaggegevens
- Sent HTTP PUT http://localhost:8080/employees / 1 with correct data
bibliotheken die deel uitmaken van dropwizard
zodra u dropwizard in uw project opneemt, krijgt u de volgende bibliotheken toegevoegd aan uw classpath.
- Jersey-Voor het bouwen van RESTful webapplicaties.
- Jetty-Dropwizard gebruikt de jetty HTTP library om een HTTP server direct in uw project in te voegen.
- Jackson-voor object naar/van JSON conversie. Hiermee kunt u uw domeinmodellen rechtstreeks exporteren met JAXB-annotaties.
- Guava-sterk geoptimaliseerde onveranderlijke datastructuren om de ontwikkeling te versnellen.
- Logback en SLF4j – voor performante en flexibele logging.
- Hibernate Validator – een eenvoudig declaratief kader voor het valideren van gebruikersinvoer en het genereren van nuttige en i18n-vriendelijke foutmeldingen.
- Apache HttpClient-voor zowel low-als high-level interactie met andere webservices.
- JDBI – de meest eenvoudige manier om een relationele database met Java te gebruiken.
- Liquidbase – om uw databaseschema in toom te houden gedurende uw ontwikkelings-en releasecyclus.
- Vrijemarker-templating systemen.
- snor-eenvoudige templating systemen voor meer gebruikersgerichte toepassingen.
- Joda Time-zeer complete en gezonde bibliotheek voor het verwerken van datums en tijden.
dropwizard instellen met maven
ons project zal gebaseerd zijn op het Maven-archetype-quickstart archetype. U kunt het project maken met behulp van command prompt of eclipse gebruiken om eenvoudige Maven java project te maken.
mvn archetype:generate -DgroupId=com.howtodoinjava.demo -DartifactId=DropWizardExample -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
gegenereerd project zal ook een bestand pom.xml
hebben. Voeg dropwizard afhankelijkheid daar.
dit zal alle jar-bestanden downloaden en toevoegen aan uw klasspath. Om build en pakket ondersteuning toe te voegen aan ons project, zullen we de Maven-shade plugin gebruiken, die ons in staat zal stellen om ons project volledig te verpakken, samen met de afhankelijkheden, in een enkele standalone JAR-bestand (Fat/Uber JAR) die kan worden gedistribueerd en uitgevoerd zoals is.
Complete pom.xml-bestand ziet er zo uit.
REST toepassingsklasse
toepassingsklasse is het invoerpunt voor elke dropwizard-toepassing. Het moet de klasse io.dropwizard.Application
uitbreiden en de methoden initialize(Bootstrap<Configuration>)
en run(Configuration, Environment)
toepassen. Ze bereiden de runtime-omgeving van de applicatie voor.
om de methode uitvoeren aan te roepen, hebt u de methode public static void main(String args) {}
nodig, die wordt aangeroepen door het commando java -jar
wanneer u de toepassing uitvoert als jar-bestand.
voor het uitvoeren van het JAR-bestand, voegen we het serverargument toe aan het commando dat de ingesloten HTTP-Server (Jetty) start om onze service uit te voeren.
java -jar target\DropWizardExample.jar server
de ingebedde Jetty-server van Dropwizard zal standaard proberen te binden aan de poorten 8080 en 8081. Poort 8080 wordt gebruikt door de server om inkomende HTTP-verzoeken aan de applicatie te dienen, terwijl 8081 wordt gebruikt door de beheerinterface van Dropwizard.
we hebben ook de benodigde Logger
en LoggerFactory
klassen geïmporteerd om een logger instantie te construeren die we zouden kunnen gebruiken voor onze logging behoeften.
Create REST Resource and API ‘s
wanneer u een Bootstrap-klasse voor toepassingen hebt toegevoegd, kunt u nu REST resources toevoegen die REST API’ s bevatten. In dit voorbeeld, Ik heb gemaakt en employee management applicatie-dus het heeft API ‘ s voor het maken/bijwerken/verwijderen werknemer records. Deze klasse is verantwoordelijk voor het verwerken van HTTP-verzoeken en het genereren van JSON-reacties.
omdat we Jersey in ons classpath hebben, zullen we het gebruiken om REST API ‘ s te bouwen.
voor het imiteren van de DB, heb ik EmployeeDB
klasse gemaakt die werknemersrecords en updates in het geheugen opslaat.
Build Resource Representations
representatie is wat de gegevens bevat en geserialiseerd in JSON. Het is model voor rustgevende toepassing. Bij het gebruik van Jersey met Jackson, alles wat je nodig hebt om een resource vertegenwoordiging op te bouwen is – een eenvoudige POJO volgens java bean normen. Jackson construeert de JSON string recursief volgens de getter methoden van elke klasse en hun return type.
java.util.List
type zal worden geconverteerd naar een JSON array.indien nodig kunt u in sommige gevallen voorkomen dat een eigenschap deel uitmaakt van de JSON-representatie door de annotatie @JsonIgnore
aan de getter toe te voegen.
validatie van aanvragen
wanneer u PUT
en POST
aanvragen accepteert, moet u de inhoud van door de gebruiker ingediende entiteiten valideren in de aanvraagtekst. Dropwizard gebruikt hiervoor hibernate validator. Het toevoegen van validatie vereist de volgende stappen.
Verify REST API ‘s
nu we validaties voor REST API’ s hebben gemaakt en toegevoegd, laten we dit testen.
build applicatie uber jar-bestand
> mvn clean package
start applicatie in jetty-server
> java -jar target\DropWizardExample-0.0.1-SNAPSHOT.jar server
Access URI http://localhost:8080/employees
dit geeft werknemerscollectie en gerelateerde responskoppen terug.
toegang-URI http://localhost:8080/employees/1
dit retourneert werknemer record met id 1.
verzonden HTTP PUT http://localhost:8080/employees / 1 met ongeldige aanvraaggegevens
u krijgt validatieberichten.
Sent HTTP PUT http://localhost:8080/employees / 1 with correct data
Employee record will be updated succes.
op dezelfde manier kunt u andere API ’s en scenario’ s testen.