Pardonnez-moi, mais je ne connais peut-être pas tout le jargon nécessaire pour poser correctement cette question.Changer le type de contenu dans le service REST jax-rs
Je travaille sur un service web REST assez simple en Java en utilisant l'implémentation org.apache.cxf.jaxrs.ext
de jax-rs. L'en-tête de la méthode est comme ceci:
@GET
@Path("json/{fullAlias}")
@Produces({"application/json"})
public String json(@PathParam("fullAlias") String fullAlias, @Context MessageContext req)
où MessageContext est org.apache.cxf.jaxrs.ext.MessageContext
.
Il y a deux choses que je suis en train d'accomplir que je ne peux pas sembler comprendre:
- Modifier le type de contenu si certaines conditions sont remplies (par exemple pour une erreur)
- changement le code d'état de la réponse
J'ai essayé d'utiliser changer la réponse en y accédant par le MessageContext:
HttpServletResponse response = req.getHttpServletResponse();
response.setContentType("text/plain")
response.setStatus("HttpServletResponse.SC_BAD_REQUEST);
Mais ces changements n'ont aucune incidence sur la réponse envoyée; avec ou sans l'annotation @Produces, la définition du type de contenu dans la méthode n'affecte pas le type de contenu réel (avec l'annotation, il renvoie bien sûr "application/json", sans "text/html" par défaut). Je renvoie une corde simple comme le corps. Je me suis amusé à essayer de retourner un objet javax.ws.rs.core.Response pour faire ce que je veux, mais je ne sais pas trop à ce sujet.
Comment changer le type de contenu et/ou les codes d'état à l'intérieur de cette méthode?
Merci!Je me demandais si quelque chose comme ça fonctionnerait, mais vous me laissez savoir comment le faire. – Indigenuity