Je veux fournir un service boolean
REST
qui ne fournit qu'une réponse booléenne vraie/fausse.
Mais ce qui suit ne fonctionne pas. Pourquoi?
@RestController
@RequestMapping("/")
public class RestService {
@RequestMapping(value = "/",
method = RequestMethod.GET,
produces = MediaType.APPLICATION_XML_VALUE)
@ResponseBody
public Boolean isValid() {
return true;
}
}
Résultat: HTTP 406: The resource identified by this request is only capable of generating responses with characteristics not acceptable according to the request "accept" headers.
Vous n'êtes pas obligé de supprimer @ResponseBody
, vous auriez pu supprimer le MediaType
:
@RequestMapping(value = "/", method = RequestMethod.GET)
@ResponseBody
public Boolean isValid() {
return true;
}
auquel cas, il aurait par défaut été application/json
, donc cela fonctionnerait aussi:
@RequestMapping(value = "/", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public Boolean isValid() {
return true;
}
si vous spécifiez MediaType.APPLICATION_XML_VALUE
, votre réponse doit vraiment être sérialisable en XML, ce que true
ne peut pas être.
De plus, si vous voulez juste un true
dans la réponse, ce n'est pas vraiment du XML, n'est-ce pas?
Si vous voulez spécifiquement text/plain
, vous pouvez le faire comme ceci:
@RequestMapping(value = "/", method = RequestMethod.GET, produces = MediaType.TEXT_PLAIN_VALUE)
@ResponseBody
public String isValid() {
return Boolean.TRUE.toString();
}