Translate

Mostrando las entradas con la etiqueta Dropwizard. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Dropwizard. Mostrar todas las entradas

viernes, 20 de diciembre de 2024

Dropwizard: Servicios RESTful en Java


Dropwizard es un framework para construir servicios web RESTful en Java de forma rápida y eficiente. Este marco combina varias bibliotecas maduras como Jetty, Jersey, Jackson y Metrics en un único paquete cohesivo, eliminando la complejidad de configuraciones manuales.

¿Por qué usar Dropwizard?

  1. Configuración Simplificada: Usa una estructura de proyecto preconfigurada.
  2. Eficiencia: Basado en Jetty, ofrece un servidor web de alto rendimiento.
  3. Monitorización: Incluye herramientas para métricas y monitoreo listas para usar.
  4. Integración: Compatible con Jersey para manejar endpoints RESTful y Jackson para JSON.
  5. Producción-Ready: Diseñado para entornos de producción con soporte para configuración YAML y validaciones.

Para comenzar, necesitas agregar Dropwizard a tu proyecto Maven:


<dependency>

    <groupId>io.dropwizard</groupId>

    <artifactId>dropwizard-core</artifactId>

    <version>2.1.4</version>

</dependency>


Un proyecto típico de Dropwizard tiene tres componentes principales:

  • Aplicación (`MyApplication`): Configura el servicio y los recursos.
  • Configuración (`MyConfiguration`): Define las opciones de configuración en YAML.
  • Recursos (`MyResource`): Implementa los endpoints RESTful.


Veamos un ejemplo, primero empezamos configurando: 


import io.dropwizard.Application;

import io.dropwizard.setup.Bootstrap;

import io.dropwizard.setup.Environment;


public class HelloWorldApplication extends Application<HelloWorldConfiguration> {


    public static void main(String[] args) throws Exception {

        new HelloWorldApplication().run(args);

    }


    @Override

    public void initialize(Bootstrap<HelloWorldConfiguration> bootstrap) {

        // Inicialización si es necesaria

    }


    @Override

    public void run(HelloWorldConfiguration configuration, Environment environment) {

        final HelloWorldResource resource = new HelloWorldResource(configuration.getDefaultName());

        environment.jersey().register(resource);

    }

}


Crea un archivo config.yml:


defaultName: "Mundo"

server:

  applicationConnectors:

    - type: http

      port: 8080

  adminConnectors:

    - type: http

      port: 8081


Por ultimo hacemos nuestros servicios: 


import javax.ws.rs.GET;

import javax.ws.rs.Path;

import javax.ws.rs.Produces;

import javax.ws.rs.core.MediaType;


@Path("/hello")

@Produces(MediaType.APPLICATION_JSON)

public class HelloWorldResource {


    private final String defaultName;


    public HelloWorldResource(String defaultName) {

        this.defaultName = defaultName;

    }


    @GET

    public String sayHello() {

        return String.format("Hola, %s!", defaultName);

    }

}


Y la configuración va ser: 


import io.dropwizard.Configuration;

import com.fasterxml.jackson.annotation.JsonProperty;

import javax.validation.constraints.NotEmpty;


public class HelloWorldConfiguration extends Configuration {


    @NotEmpty

    private String defaultName;


    @JsonProperty

    public String getDefaultName() {

        return defaultName;

    }


    @JsonProperty

    public void setDefaultName(String defaultName) {

        this.defaultName = defaultName;

    }

}


Y luego levantamos el server y vamos a http://localhost:8080/hello donde veremos nuestro "hello!" 


Dropwizard es una opción excelente para construir servicios RESTful en Java con un enfoque minimalista. La verdad no me queda claro porque eligiría dropwizard y no spring boot. Si alguien sabe escriba en los comentarios. 


Dejo link: https://www.dropwizard.io/en/stable/

lunes, 2 de marzo de 2015

Dropwizard vs. Spring Boot


Hace poco escribí sobre Spring Boot, una forma de crear proyectos rápidamente. Y me gusto mucho la comparativa Dropwizard vs. Spring Boot. A la vez no conocía Dropwizard, y le voy a prestar más atención.

Dejo link: http://blog.takipi.com/java-bootstrap-dropwizard-vs-spring-boot/