作者:追梦and寻梦 | 来源:互联网 | 2023-05-20 17:29
@RequestBody
在Spring中使用注释时,如何在REST API调用中使body可选?
使用Spring的最新版本,如果使用@RequestBody
注释,它会使客户端始终发送正文而不使其成为可选项.
我试过@RequestBody (required=false)
但是没有用,我的请求仍然是null.
如何在不强制要求的情况下将请求转换为正确的必需对象?
例如:
@RequestMapping(value="/add/employee", method=RequestMethod.POST)
public void addEmployee(@RequestBody Employee employee){
// ...
}
在这里,我想使用POST添加员工,但没有正文.我怎么做?如果我发送空体,春天最新版本抛出错误"身体缺失"...
1> Jack Dorson..:
@Santosh,我不确定你指的是哪个必要的论点.迈克已经提到他尝试使用@RequestBody (required=false)
并且请求仍然是空的.也许你可以详细说明并举例说明.
@Mike,可能你可以尝试使用另一个独立的转换器来满足你的需求.
注意:我注意到Spring v4.1.6的相同问题,迈克可能正在使用它,因为他提到他正在使用最新版本.
2> Santosh Josh..:
我猜你使用的是高于3.2的弹簧版本,因为版本存在问题.@RequestBody应该有一个必需的参数来允许请求体是可选的
看看以下链接
Spring @RequestBody Anotation
@RequestBody
Body需要和参数必需,默认情况下为true.将其指定为false将对您有所帮助
需要公共抽象布尔值
是否需要身体内容.
默认值为true,导致在没有正文内容的情况下抛出异常.如果您希望在body内容为null时传递null,请将其切换为false.
当使用String作为RequestBody(required = false)时,默认值不会为null,而是为{}.不知道为什么,但花了我一些时间,并认为我分享.