Perdóneme, pero puede que no esté familiarizado con toda la jerga necesaria para hacer esta pregunta correctamente.Cambiar el tipo de contenido en el servicio REST de jax-rs
Estoy trabajando en un servicio web REST bastante simple en Java utilizando la implementación org.apache.cxf.jaxrs.ext
de jax-rs. La cabecera del método es la siguiente:
@GET
@Path("json/{fullAlias}")
@Produces({"application/json"})
public String json(@PathParam("fullAlias") String fullAlias, @Context MessageContext req)
donde MessageContext es org.apache.cxf.jaxrs.ext.MessageContext
.
Hay dos cosas que estoy tratando de lograr que me parece que no puede averiguar:
- Cambiar el tipo de contenido si se cumplen ciertas condiciones (por ejemplo, para un error)
- Cambio el código de estado de la respuesta
he intentado usar el cambio de la respuesta de acceder a él a través de la MessageContext:
HttpServletResponse response = req.getHttpServletResponse();
response.setContentType("text/plain")
response.setStatus("HttpServletResponse.SC_BAD_REQUEST);
Pero estos cambios no influyen en la respuesta enviada; con o sin la anotación @Produces, establecer el tipo de contenido dentro del método no afecta el tipo de contenido real (con la anotación, por supuesto devuelve "application/json", sin que por defecto sea "text/html").
Estoy devolviendo una cadena simple como el cuerpo. He entretenido tratando de devolver un objeto javax.ws.rs.core.Response para hacer lo que quiero, pero no sé mucho al respecto.
¿Cómo cambiaría el tipo de contenido y/o los códigos de estado de este método?
¡Gracias!Me preguntaba si algo como esto funcionaría, pero me dejas saber cómo hacerlo. – Indigenuity