Skip to main content

Command Palette

Search for a command to run...

Jakarta RESTful Web Services (JAX-RS) en Quarkus

Updated
2 min read

Introducción

Jakarta RESTful Web Services (JAX-RS) es la especificación estándar para crear servicios REST en Java. Quarkus implementa completamente JAX-RS y además proporciona su propia extensión quarkus-rest que mejora el rendimiento.

¿Qué es JAX-RS?

JAX-RS es una API Java para el desarrollo de servicios web RESTful. Permite crear endpoints HTTP usando anotaciones simples y POJOs (Plain Old Java Objects).

Características Principales

1. Anotaciones Básicas

@Path("/api/heroes")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public class HeroResource {

    @GET
    public Response getAllHeroes() {
        return Response.ok(heroes).build();
    }

    @GET
    @Path("/{id}")
    public Response getHero(@PathParam("id") Long id) {
        return Response.ok(hero).build();
    }

    @POST
    public Response createHero(Hero hero) {
        return Response.status(201).entity(createdHero).build();
    }
}

2. Métodos HTTP

JAX-RS soporta todos los métodos HTTP:

  • @GET: Obtener recursos

  • @POST: Crear recursos

  • @PUT: Actualizar recursos

  • @DELETE: Eliminar recursos

  • @PATCH: Actualización parcial

  • @HEAD: Headers sin cuerpo

  • @OPTIONS: Opciones del recurso

3. Parámetros

@GET
@Path("/search")
public Response search(
    @QueryParam("name") String name,
    @QueryParam("powerLevel") @DefaultValue("80") int powerLevel,
    @PathParam("id") Long id,
    @HeaderParam("Authorization") String auth,
    @CookieParam("sessionId") String sessionId
) {
    // ...
}

4. Respuestas

// Respuesta simple
return Response.ok(hero).build();

// Respuesta con status
return Response.status(Response.Status.CREATED).entity(hero).build();

// Respuesta con headers
return Response.ok(hero)
    .header("X-Custom-Header", "value")
    .build();

// Respuesta sin contenido
return Response.noContent().build();

Quarkus REST vs RESTEasy Classic

Quarkus ahora recomienda usar quarkus-rest en lugar de quarkus-resteasy:

  • Mejor rendimiento: Optimizado para Quarkus

  • Startup más rápido: Menos overhead

  • API moderna: Mejoras en la API

Serialización Automática

Quarkus serializa/deserializa automáticamente objetos Java a/desde JSON:

@POST
public Response createHero(Hero hero) {
    // 'hero' ya está deserializado desde JSON automáticamente
    Hero created = heroService.create(hero);
    return Response.ok(created).build(); // Se serializa automáticamente
}

Ejemplo Completo

Nuestro demo muestra:

  • Endpoints CRUD completos

  • Búsquedas con query parameters

  • Manejo de errores

  • Validación de parámetros

Ventajas en Quarkus

  1. Startup Rápido: Los endpoints se registran en tiempo de compilación

  2. Serialización Automática: JSON automático con Jackson

  3. Validación Integrada: Bean Validation funciona automáticamente

  4. Testing Fácil: REST Assured integrado

Conclusión

JAX-RS en Quarkus es potente y fácil de usar. La integración nativa con CDI y Bean Validation hace que crear APIs REST sea muy sencillo.

Recursos

More from this blog

JoeDayz

52 posts

Community Guy | Java Champion | AWS Architect | Software Architect