在最新的 Spring v4 中使用带有可选正文的 @RequestBody
Use @RequestBody with optional body in latest Spring v4
在 Spring 中使用 @RequestBody
注释时,如何在 REST API 调用中使正文可选?
在Spring的最新版本中,如果你使用@RequestBody
注解,它会让客户端一直发送body而不是可选的。
我尝试了 @RequestBody (required=false)
,但没有成功,我的请求仍然无效。
如何在不强制要求正文的情况下将请求转换为正确的必需对象?
例如:
@RequestMapping(value="/add/employee", method=RequestMethod.POST)
public void addEmployee(@RequestBody Employee employee){
// ...
}
在这里,我想使用 POST 添加员工但没有正文。我怎么做? Spring 如果我发送空正文,最新版本会抛出错误 "body missing"...
我猜你使用的是 3.2 以上的 spring 版本,因为版本有问题。 @RequestBody should have a required parameter to allow a request body to be optional
看看下面的link
Spring @RequestBody Anotation
@RequestBody
正文采用参数 required,默认情况下为真。将其指定为 false 会对您有所帮助
public abstract boolean required
Whether body content is required.
Default is true, leading to an exception thrown in case there is no body content. Switch this to false if you prefer null to be passed when the body content is null.
@Santosh,我不确定你指的是哪个必需参数。 Mike 已经提到他尝试使用 @RequestBody (required=false)
并且请求仍然为空。也许您可以详细说明并举例说明。
@Mike,也许你可以尝试使用另一个单独的转换器来满足你的目的。
注意:我注意到 Spring v4.1.6 存在同样的问题,Mike 可能正在使用它,因为他提到他使用的是最新版本。
您可以使用 java.util.Optional
:
@RequestMapping(value="/add/employee", method=RequestMethod.POST)
public void addEmployee(@RequestBody Optional<Employee> employee){
// ...
}
在 Spring 中使用 @RequestBody
注释时,如何在 REST API 调用中使正文可选?
在Spring的最新版本中,如果你使用@RequestBody
注解,它会让客户端一直发送body而不是可选的。
我尝试了 @RequestBody (required=false)
,但没有成功,我的请求仍然无效。
如何在不强制要求正文的情况下将请求转换为正确的必需对象?
例如:
@RequestMapping(value="/add/employee", method=RequestMethod.POST)
public void addEmployee(@RequestBody Employee employee){
// ...
}
在这里,我想使用 POST 添加员工但没有正文。我怎么做? Spring 如果我发送空正文,最新版本会抛出错误 "body missing"...
我猜你使用的是 3.2 以上的 spring 版本,因为版本有问题。 @RequestBody should have a required parameter to allow a request body to be optional
看看下面的link Spring @RequestBody Anotation
@RequestBody
正文采用参数 required,默认情况下为真。将其指定为 false 会对您有所帮助
public abstract boolean required
Whether body content is required. Default is true, leading to an exception thrown in case there is no body content. Switch this to false if you prefer null to be passed when the body content is null.
@Santosh,我不确定你指的是哪个必需参数。 Mike 已经提到他尝试使用 @RequestBody (required=false)
并且请求仍然为空。也许您可以详细说明并举例说明。
@Mike,也许你可以尝试使用另一个单独的转换器来满足你的目的。
注意:我注意到 Spring v4.1.6 存在同样的问题,Mike 可能正在使用它,因为他提到他使用的是最新版本。
您可以使用 java.util.Optional
:
@RequestMapping(value="/add/employee", method=RequestMethod.POST)
public void addEmployee(@RequestBody Optional<Employee> employee){
// ...
}