【问题标题】:How to return a simple boolean value as plain text with @RestController? [duplicate]如何使用@RestController 将简单的布尔值作为纯文本返回? [复制]
【发布时间】:2016-02-29 14:17:50
【问题描述】:

我只想通过一个简单的 servlet 返回文本“true”:

@RequestMapping(value = "/", method = RequestMethod.GET)
@ResponseBody
public Boolean isValid() {
    return true;
}

结果:406 - The resource identified by this request is only capable of generating responses with characteristics not acceptable according to the request "accept" headers.

为什么?我怎样才能返回那个简单的值? 如果我将返回类型更改为String "true",则没有区别。

【问题讨论】:

  • 您希望得到什么响应?一串true?
  • 没错。我只想返回“true”。
  • 请求中似乎有接受标头。你能找出它们是什么吗?也许您必须为响应提供一个 mime 类型(例如 text/plain 或 application/xml ...)
  • 我想你正在寻找String#valueOf。你可以写成return String.valueOf(true);

标签: java spring rest spring-restcontroller spring-rest


【解决方案1】:

Spring MVC 默认转换器似乎无法将Boolean 转换为text/plain。只有当我尝试使用Accept: application/json 提出请求时,它才起作用。

我建议将返回类型更改为 String,因为无论如何它都是您想要返回的。

@RequestMapping(value = "/", method = RequestMethod.GET)
@ResponseBody
public String isValid() {
    return Boolean.TRUE.toString();
}

这样,没有Accept 标头的请求可以正常工作,但您也可以根据需要添加Accept: text/plain

【讨论】:

    【解决方案2】:
    @RequestMapping(value = "/", method = RequestMethod.GET)
    @ResponseBody
    public String isValid() {
       return "true";
    }
    

    并为您的请求删除/设置适当的标头值到 accept 标头。

    阅读更多关于 http 状态码here

    【讨论】:

      猜你喜欢
      • 2018-12-19
      • 1970-01-01
      • 2015-04-07
      • 1970-01-01
      • 2022-01-03
      • 1970-01-01
      • 2019-05-24
      • 2021-08-10
      • 1970-01-01
      相关资源
      最近更新 更多