Jakarta RESTful Web Services (JAX-RS) en Quarkus
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
Startup Rápido: Los endpoints se registran en tiempo de compilación
Serialización Automática: JSON automático con Jackson
Validación Integrada: Bean Validation funciona automáticamente
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.




