【发布时间】:2014-10-04 00:47:55
【问题描述】:
我有下面的控制器:
@RestController
@RequestMapping(value = "/v1/mail", consumes = {APPLICATION_JSON_VALUE})
@ResponseStatus(OK)
public class MailController {
private CoreOutRestAdapter coreAdapter;
@Autowired
public MailController(CoreOutRestAdapter coreAdapter) {
this.coreAdapter = coreAdapter;
}
@RequestMapping(method = POST)
public void sendMail(@RequestBody @Validated Mail mail) {
coreAdapter.sendMail(mail);
}
}
和 classpath 中的 jackson-databind 2.3.2。但是如果我使用 Content-Type: application/json 发送 POST 请求,返回的响应包含 415 状态(不支持的媒体类型)。我不明白为什么控制器会忽略 @RequestMapping 注释中的“consumes”属性。我怎样才能解决这个问题?此外,您可以在 github https://github.com/f1xmAn/scail 找到项目的其余部分
【问题讨论】:
-
APPLICATION_JSON_VALUE中的值是多少?您可以尝试将其移至方法级别。 -
@Keerthivasan 它是 org.springframework.http.MediaType.APPLICATION_JSON_VALUE ("application/json")。我试过了,但没有任何改变。顺便说一句,它必须适用于类级别。
-
也许可以尝试从 sendMail 方法中将 consumes = {APPLICATION_JSON_VALUE} 添加到 @RequestMapping
-
@ArekWoźniak 返回相同的状态
标签: java json spring spring-mvc jackson