web-dev-qa-db-fra.com

Comment retourner une valeur booléenne avec repos?

Je veux fournir un service booleanREST 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.

12
membersound

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();
}
13
ci_