我在控制器中有两个端点映射到具有不同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
开头),但我没有找到任何文档在那附近。它是如何工作的?
答案 0 :(得分:1)
即使你看到一些订单,我也建议不要依赖它。
而是定义另一个不声明produces
的方法,这样你就会知道肯定 Accept
没有发送 - 而不是:
已发送
application/a+json
或根本未发送。
这个第三种方法实际上什么都不做,它可以委托你已经拥有的任何东西,例如最初记录请求。