Dropwizard es un framework Java de código abierto para el rápido desarrollo de API REST. Dropwizard es una especie de ecosistema que contiene todas las dependencias (como Jersey, Jackson o jetty) agrupadas en un solo paquete o se pueden agregar como módulo separado. Si no está utilizando dropwizard, terminará recopilando todas las dependencias usted mismo y, a menudo, resultará en problemas de carga de clases debido a la falta de coincidencia de versiones entre varias bibliotecas java. Dropwizard resuelve este problema por ti y reúne bibliotecas estables y maduras en un paquete simple y liviano que te permite concentrarte en hacer las cosas. Aprendamos a usar dropwizard para crear API REST, paso a paso.
Table of ContentsLibraries included inside dropwizardSetup dropwizard with mavenCreate REST Application ClassCreate REST Resource and APIsBuild Resource RepresentationsRequest ValidationVerify REST APIs
- Bibliotecas incluidas dentro de dropwizard
- Configurar dropwizard con maven
- Crear clase de aplicación REST
- Crear recursos y api REST
- Crear representaciones de recursos
- Validación de solicitudes
- Verificar API REST
- Crear el archivo uber jar de la aplicación
- Iniciar la aplicación en el servidor jetty
- URI de acceso http://localhost:8080/employees
- URI de accesohttp://localhost:8080/employees/1
- Enviado HTTP PUT http://localhost:8080/employees / 1 con datos de solicitud no válidos
- HTTP enviado PUT http://localhost:8080/employees/ 1 con datos correctos
Bibliotecas incluidas dentro de dropwizard
Una vez que incluya dropwizard en su proyecto, obtendrá las siguientes bibliotecas agregadas a su ruta de clase.
- Jersey-Para crear aplicaciones web RESTful.
- Jetty-Dropwizard utiliza la biblioteca HTTP de Jetty para incrustar un servidor HTTP directamente en el proyecto.
- Jackson-Para conversión de objetos a/desde JSON. Permite exportar sus modelos de dominio directamente con anotaciones JAXB.
- Guayaba: estructuras de datos inmutables altamente optimizadas para acelerar el desarrollo.
- Logback y SLF4j – para un registro flexible y eficiente.
- Validador de Hibernación: un marco declarativo fácil para validar la entrada del usuario y generar mensajes de error útiles y amigables con i18n.
- Apache HttpClient – Para interacción de bajo y alto nivel con otros servicios web.
- JDBI: la forma más sencilla de usar una base de datos relacional con Java.
- Liquidbase: para mantener su esquema de base de datos bajo control durante todo el ciclo de desarrollo y lanzamiento.
- Sistemas de plantillas FreeMarker.
- Bigote: sistemas de plantillas simples para aplicaciones más orientadas al usuario.
- Joda Time-biblioteca muy completa y sensata para manejar fechas y horas.
Configurar dropwizard con maven
Nuestro proyecto se basará en el arquetipo maven-archetype – quickstart. Puede crear el proyecto utilizando el símbolo del sistema o usar eclipse para crear un proyecto java maven simple.
mvn archetype:generate -DgroupId=com.howtodoinjava.demo -DartifactId=DropWizardExample -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
El proyecto generado también tendrá un archivo pom.xml
. Agregue dependencia de dropwizard allí.
Esto descargará todos los archivos jar y los agregará a su ruta de clase. Para agregar soporte de compilación y paquetes a nuestro proyecto, usaremos el complemento maven-shade, que nos permitirá empaquetar nuestro proyecto completamente, junto con sus dependencias, en un solo archivo JAR independiente (Fat/Uber JAR) que se puede distribuir y ejecutar tal cual.
Pom completo.el archivo xml se ve así.
Crear clase de aplicación REST
La clase de aplicación es el punto de entrada para cualquier aplicación dropwizard. Necesita extender la clase io.dropwizard.Application
e implementar los métodos initialize(Bootstrap<Configuration>)
y run(Configuration, Environment)
. Preparan el entorno de ejecución de la aplicación.
Para invocar el método run, necesitará tener el método public static void main(String args) {}
, que será invocado por el comando java -jar
cuando ejecute la aplicación como archivo jar.
Para ejecutar el archivo JAR, agregamos el argumento server al comando que inicia el servidor HTTP incrustado (Jetty) para ejecutar nuestro servicio.
java -jar target\DropWizardExample.jar server
El servidor embarcadero integrado de Dropwizard intentará vincularse a los puertos 8080 y 8081 de forma predeterminada. El puerto 8080 es utilizado por el servidor para servir solicitudes HTTP entrantes a la aplicación, mientras que el 8081 es utilizado por la interfaz de administración de Dropwizard.
También hemos importado las clases Logger
y LoggerFactory
necesarias para construir una instancia de registrador que pudiéramos usar para nuestras necesidades de registro.
Crear recursos y api REST
Ahora que ha agregado la clase de arranque de aplicaciones, ahora puede agregar recursos REST que contengan API REST. En este ejemplo, he creado una aplicación de administración de empleados, por lo que tiene API para crear/actualizar/eliminar registros de empleados. Esta clase será responsable de manejar las solicitudes HTTP y generar respuestas JSON.
Como tenemos Jersey en nuestro classpath, lo usaremos para crear API REST.
Para imitar la base de datos, he creado la clase EmployeeDB
que almacena los registros y las actualizaciones de los empleados en la memoria.
Crear representaciones de recursos
La representación es la que contiene los datos y se serializa en JSON. Es un modelo para una aplicación reparadora. Al usar Jersey con Jackson, todo lo que necesita para crear una representación de recursos es un POJO simple que siga los estándares de java bean. Jackson construye la cadena JSON recursivamente de acuerdo con los métodos getter de cada clase y su tipo de retorno.
java.util.List
se convertirá en una matriz JSON.Si es necesario en algunos casos, puede evitar que una propiedad forme parte de la representación JSON agregando la anotación @JsonIgnore
a su captador.
Validación de solicitudes
Al aceptar solicitudes PUT
y POST
, deberá validar el contenido de la entidad enviado por el usuario en el cuerpo de la solicitud. Dropwizard utiliza el validador de hibernación para este propósito. La adición de validación requiere los siguientes pasos.
Verificar API REST
Ahora, cuando hayamos creado y agregado validaciones para API REST, probemos esto.
Crear el archivo uber jar de la aplicación
> mvn clean package
Iniciar la aplicación en el servidor jetty
> java -jar target\DropWizardExample-0.0.1-SNAPSHOT.jar server
URI de acceso http://localhost:8080/employees
Esto devolverá la recopilación de empleados y los encabezados de respuesta relacionados.
URI de accesohttp://localhost:8080/employees/1
Esto devolverá el registro del empleado con id 1.
Enviado HTTP PUT http://localhost:8080/employees / 1 con datos de solicitud no válidos
Obtendrá mensajes de validación.
HTTP enviado PUT http://localhost:8080/employees/ 1 con datos correctos
El registro del empleado se actualizará correctamente.
De la misma manera, puede probar otras API y escenarios.