Jakarta RESTful Web Services ( JAX-RS ; anteriormente Java API for RESTful Web Services ) es una especificación de API de Jakarta EE que proporciona soporte para crear servicios web de acuerdo con el patrón arquitectónico de Transferencia de Estado Representacional (REST). [1] JAX-RS utiliza anotaciones , introducidas en Java SE 5 , para simplificar el desarrollo y la implementación de clientes y puntos finales de servicios web.
A partir de la versión 1.1, JAX-RS es una parte oficial de Java EE 6. Una característica notable de ser una parte oficial de Java EE es que no es necesaria ninguna configuración para comenzar a utilizar JAX-RS. Para entornos que no sean Java EE 6, se requiere una pequeña entrada en el descriptor de implementación web.xml .
JAX-RS proporciona algunas anotaciones para ayudar a mapear una clase de recurso (un POJO ) como un recurso web. Las anotaciones utilizan el paquete Java jakarta.ws.rs
(anteriormente era javax.ws.rs
pero se renombró el 19 de mayo de 2019 [2] ). Incluyen:
@Path
especifica la ruta relativa para una clase o método de recurso.@GET
, @PUT
, @POST
, @DELETE
y @HEAD
especifica el tipo de solicitud HTTP de un recurso.@Produces
especifica los tipos de medios de Internet de respuesta (utilizados para la negociación de contenido ).@Consumes
Especifica los tipos de medios de Internet solicitados aceptados.Además, proporciona anotaciones adicionales a los parámetros del método para extraer información de la solicitud. Todas las @*Param
anotaciones toman una clave de algún tipo que se utiliza para buscar el valor requerido.
@PathParam
Vincula el parámetro del método a un segmento de ruta.@QueryParam
Vincula el parámetro del método al valor de un parámetro de consulta HTTP .@MatrixParam
Vincula el parámetro del método al valor de un parámetro de matriz HTTP.@HeaderParam
Vincula el parámetro del método a un valor de encabezado HTTP .@CookieParam
Vincula el parámetro del método a un valor de cookie .@FormParam
Vincula el parámetro del método a un valor de formulario .@DefaultValue
especifica un valor predeterminado para los enlaces anteriores cuando no se encuentra la clave.@Context
devuelve el contexto completo del objeto (por ejemplo @Context HttpServletRequest request
).En enero de 2011, el JCP formó el grupo de expertos JSR 339 para trabajar en JAX-RS 2.0. Los objetivos principales son (entre otros) una API de cliente común y soporte para hipermedia siguiendo el principio HATEOAS de REST . En mayo de 2013, alcanzó la etapa de versión final. [3]
El 22 de agosto de 2017 se publicó la versión final de la especificación JAX-RS 2.1 [4] . Las principales nuevas funciones admitidas incluyen eventos enviados por el servidor , clientes reactivos y JSON-B. [5]
Las implementaciones de JAX-RS incluyen: [6]