![](/img/trans.png)
[英]Who sets response content-type in Spring MVC (@ResponseBody)
[英]Content-type and @ResponseBody in spring
这可能很简单,但对我的理解将非常有帮助。
我在restcontroller中使用@ResponseBody将String值返回给浏览器。 在浏览器中成功接收到响应字符串。
即:
@RequestMapping(value="/foo", method=RequestMethod.GET)
@ResponseBody
public String foo() {
return "bar";
}
以上回应的内容类型是什么? 如果这就像在servlet响应中编写setAttribute一样,那么该属性名称又如何呢?
如果浏览器仅接受“ application / json”,spring将如何处理响应?
提交的代码会生成text / html,默认情况下,所有映射的Controller方法也会生成text / html。 如果要生成application / json,则必须将RequestMapping更改为
@RequestMapping(value="/foo", method=RequestMethod.GET, produces = "application/json")
但是,这不是有效的Json字符串,您必须更改它,因为您提交的方法将返回空主体。 提交的示例将是有效的文本/纯文本。
当请求包含标头"Accept: application/json"
并返回其他内容类型时,Spring返回Json类型的响应,解释抛出了HttpMediaTypeNotAcceptableException
。
关于servlet的类比-请解释,我不完全理解您的意思。 字符串作为响应主体返回,它与请求属性非常不同。 您想实现什么?
我认为内容类型将是纯文本。 如果请求集接受“ application / json”,则取决于您的浏览器/工具。 大多数其他客户端不会显示它,因为它不是application / json。 如果直接调用该API,我会认为它是由于浏览器内容嗅探而显示的(可以通过标头禁用)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.