它可能很简单,但它对我理解非常有帮助......
我在我的 restcontroller 中使用 @ResponseBody 将 String 值返回给浏览器。浏览器成功接收响应字符串。
即:
@RequestMapping(value="/foo", method=RequestMethod.GET)
@ResponseBody
public String foo() {
return "bar";
}
上述响应的内容类型是什么?如果这就像在 servlet 响应中编写 setAttribute 一样,属性名称是什么?
如果浏览器只接受“application/json”,spring 将如何处理响应?
最佳答案
提交的代码生成文本/html,默认情况下所有映射的 Controller 方法也是如此。如果你想生成 application/json,你必须将你的 RequestMapping 更改为
@RequestMapping(value="/foo", method=RequestMethod.GET, produces = "application/json")
但是这不是有效的 Json 字符串,您必须更改它,因为您提交的方法将返回空主体。提交的示例将是有效的文本/纯文本。
当请求包含标题时 "Accept: application/json"
和返回其他内容类型,Spring 返回 Json 类型的响应,解释 HttpMediaTypeNotAcceptableException
被抛出。
关于 servlet 类比 - 请解释,我不完全理解你的意思。 String 作为响应主体返回,它与请求属性有很大不同。你想达到什么目的?
关于java - Spring 中的内容类型和@ResponseBody,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38744878/