【问题标题】:Is there any way to configure spring mvc to assume a content-type?有什么方法可以配置 spring mvc 来假设内容类型?
【发布时间】:2012-01-20 17:28:11
【问题描述】:

我有一个方法要发布一些 json 数据,看起来像这样

@RequestMapping(value = "/m1", method = RequestMethod.POST)
public Object m1(@RequestBody Map<String, ?> body) {
    // do something
}

当我在发帖时将content-type 标头设置为application/json 时效果很好,但如果我不这样做则会失败并出现错误(它无法将帖子正文反序列化到地图中,因为它不知道如何)

如果没有指定标头,我必须在 spring 中配置什么以使其默认使用 application/json

【问题讨论】:

  • 为什么不提供请求标头?如果忽略 HTTP/MIME 协议,您就是在尝试违反它。
  • 虽然我在下面发布了一个答案...我强烈建议您尽可能考虑 skaffman 的方法。
  • @aweigold,我为你的答案 +1,但在你们两个之间,我确信这很奇怪,所以我不会实际实施它 :)

标签: java json spring spring-mvc content-type


【解决方案1】:

将 JSON 转换为对象的类称为 HttpMessageConverter。我假设您使用的是 Spring 附带的默认 Jackson 。您可以编写一个自定义的MessageConverter,它将始终在您的响应对象类型的支持方法中返回 true,然后只需在您的 readInternal 和 writeInternal 方法中调用 Jackson httpconverter。但是,如果您这样做,请小心,因为一旦在您的请求处理程序中注册了它,就会在所有 @ResponseBody@RequestBody 请求中询问它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-21
    • 1970-01-01
    • 2011-04-06
    • 2015-08-13
    • 2014-04-06
    • 1970-01-01
    • 2011-07-12
    • 1970-01-01
    相关资源
    最近更新 更多