我的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。
答案 0 :(得分:3)
设置new byte[0]
不会在请求正文中发送任何内容。如果您将spring MVC日志设置为TRACE
,您会看到一条消息,指出Required request body content is missing
是400 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
}