真/偽のブール応答のみを提供するboolean
REST
サービスを提供したい。
ただし、以下は機能しません。どうして?
@RestController
@RequestMapping("/")
public class RestService {
@RequestMapping(value = "/",
method = RequestMethod.GET,
produces = MediaType.APPLICATION_XML_VALUE)
@ResponseBody
public Boolean isValid() {
return true;
}
}
結果:HTTP 406: The resource identified by this request is only capable of generating responses with characteristics not acceptable according to the request "accept" headers.
@ResponseBody
を削除する必要はありません。MediaType
を削除しただけかもしれません。
@RequestMapping(value = "/", method = RequestMethod.GET)
@ResponseBody
public Boolean isValid() {
return true;
}
その場合、デフォルトでapplication/json
になるため、これも機能します。
@RequestMapping(value = "/", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public Boolean isValid() {
return true;
}
MediaType.APPLICATION_XML_VALUE
を指定する場合、応答は実際にXMLにシリアライズ可能でなければなりませんが、true
はシリアライズできません。
また、単純なtrue
を応答に含めたい場合、それは実際にはXMLではありませんか?
特にtext/plain
が必要な場合は、次のようにすることができます。
@RequestMapping(value = "/", method = RequestMethod.GET, produces = MediaType.TEXT_PLAIN_VALUE)
@ResponseBody
public String isValid() {
return Boolean.TRUE.toString();
}