état de réponse personnalisée + HTTP?
Question
J'ai une interface de repos pour mon projet. J'ai pour une classe d'une méthode POST où vous pouvez poster un xml et je renvoyer une réponse personnalisée comme:
<customResponse>Invalid email</customResponse>
si l'e-mail du xml qui a été affiché, était incorrect + autres messages personnalisés que j'ai définis pour différentes situations.
Pour toutes ces STATUS HTTP est automatiquement mis en 200 (OK). Est-il possible de le changer?
Ps: Je sais que je peux lancer une application web comme:
throw new WebApplicationException(Response.Status.BAD_REQUEST);
mais dans ce cas ma réponse personnalisée est plus inclus.
Donc je veux juste retourner mon erreur personnalisée + 400 comme réponse http.
Merci d'avance.
UPDATE après les commentaires: Ma méthode est:
@POST
@Path("{membershipExternalId}")
@Consumes(MediaType.APPLICATION_XML)
@Produces("application/xml")
public CustomResponse invite(){ //code}
Vous voyez que je retourne ma réponse CUSTOM. Si je retournerais simple, réponse que je pourrais définir le statut, mais dans ce cas, je ne vois aucune façon.
La solution
trouvé la solution:
Mettre le type de retour en tant que réponse à la méthode:
@POST
@Path("{membershipExternalId}")
@Consumes(MediaType.APPLICATION_XML)
@Produces("application/xml")
public Response invite(){ //code
if (fail())
return Response.status(400).entity(customResponse).build();
}
Response.Status (400) .entity (customResponse) fera l'affaire. Lorsque build () il permet de convertir votre réponse personnalisée xml =>
HTTP/1.1 400 Bad Request
Server: Apache-Coyote/1.1
X-Powered-By: Servlet 2.4; JBoss-4.2.3.GA (build: SVNTag=JBoss_4_2_3_GA date=200807181439)/JBossWeb-2.0
Set-Cookie: JSESSIONID=1C72921619A6B32BC1166B3567A39ADA; Path=/
Content-Type: application/xml
Content-Length: 140
Date: Thu, 18 Mar 2010 12:15:15 GMT
Connection: close
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><customResponse><message>Invalid email</message></customResponse>
Autres conseils