当多个端点映射到同一路径时,Spring MVC默认MIME类型

时间:2017-03-13 14:46:59

标签: java spring spring-mvc spring-boot

我在控制器中有两个端点映射到具有不同MIME类型的相同路径(控制器的根路径)。

@RequestMapping(method = RequestMethod.GET, produces = {"application/a+json"})
public ResponseEntity<URI> methodA() {
}

@RequestMapping(method = RequestMethod.GET, produces = {"application/b+json"})
public ResponseEntity<URI> methodB() {
}

如果请求未发送Accept标头,则响应始终为application/a+json类型。

默认情况下spring-mvc如何选择?经过一些试验,我的观察结果是它是根据字母顺序选择的(MIME类型以a开头,而不是b开头),但我没有找到任何文档在那附近。它是如何工作的?

1 个答案:

答案 0 :(得分:1)

即使你看到一些订单,我也建议不要依赖它。

而是定义另一个不声明produces的方法,这样你就会知道肯定 Accept没有发送 - 而不是:

  

已发送application/a+json或根本未发送。

这个第三种方法实际上什么都不做,它可以委托你已经拥有的任何东西,例如最初记录请求。