Tutorial de Dropwizard – Ejemplo de Hola Mundo

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
Necesitará Java 8 para ejecutar los ejemplos dados en este código que se desarrollan utilizando dropwizard versión 1.0.0.

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.

Cualquier instancia del tipo 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.

Dropwizard – Ejemplo de Solicitud GET– 1

URI de accesohttp://localhost:8080/employees/1

Esto devolverá el registro del empleado con id 1.

Dropwizard – Ejemplo de Solicitud GET– 2

Enviado HTTP PUT http://localhost:8080/employees / 1 con datos de solicitud no válidos

Obtendrá mensajes de validación.

Ejemplo de validación de Dropwizard

HTTP enviado PUT http://localhost:8080/employees/ 1 con datos correctos

El registro del empleado se actualizará correctamente.

Ejemplo de solicitud Dropwizard – PUT

De la misma manera, puede probar otras API y escenarios.

You might also like

Deja una respuesta

Tu dirección de correo electrónico no será publicada.