空请求正文给出了400错误

时间:2015-05-15 12:54:51

标签: spring spring-mvc

我的Spring控制器方法看起来像这样:

@RequestMapping(method=RequestMethod.PUT, value="/items/{itemname}")
public ResponseEntity<?> updateItem(@PathVariable String itemname, @RequestBody byte[] data) {
    // code that saves item
}

当尝试放置零长度项时,除了之外的效果很好,然后我收到HTTP错误: 400 Bad Request 。在这种情况下,我的方法永远不会被调用。我期待应该在“data”参数设置为零长度数组的情况下调用该方法。

即使Content-Length为0,我也能使请求映射工作吗?

我正在使用Spring框架版本4.1.5.RELEASE。

1 个答案:

答案 0 :(得分:3)

设置new byte[0]不会在请求正文中发送任何内容。如果您将spring MVC日志设置为TRACE,您会看到一条消息,指出Required request body content is missing400 Bad Request

的根本原因

为了支持您的案例,您应该使用@RequestBody可选

@RequestMapping(method=RequestMethod.PUT, value="/items/{itemname}")
public ResponseEntity<?> updateItem(@PathVariable String itemname, @RequestBody(required = false) byte[] data) {
  // code that saves item
}