Spring 如何处理post和put请求数据验证
我在Spring 如何处理post和put请求数据验证,spring,spring-boot,Spring,Spring Boot,我在/user资源的POST和PUT控制器中使用了以下用户详细信息模型 公共类用户详细信息{ @不空白 私有字符串用户名; @不空白 私有字符串密码; @不空白 私有字符串名; @不空白 私有字符串lastName; @不空白 专用字符串网卡; @NotNull 私有整数roleId; //构造函数和getter设置器 } @PostMapping(“/org/employee”) public void createEmployee(@RequestBody EmployeeDetailsM
/user
资源的POST
和PUT
控制器中使用了以下用户详细信息模型
公共类用户详细信息{
@不空白
私有字符串用户名;
@不空白
私有字符串密码;
@不空白
私有字符串名;
@不空白
私有字符串lastName;
@不空白
专用字符串网卡;
@NotNull
私有整数roleId;
//构造函数和getter设置器
}
@PostMapping(“/org/employee”)
public void createEmployee(@RequestBody EmployeeDetailsModel empDetails){
employeeService.createUser(empDetails);
}
@PutMapping(“/org/employee”)
public void updateEmployee(@RequestBody EmployeeDetailsModel empDetails){
employeeService.updateUser(empDetails);
}
这里,UserDetails
具有@NotNull
和@NotBlank
验证POST
可以正常工作,因为要创建用户,所有详细信息都是必需的。但是当使用PUT
更新时,我不需要填写UserDetails
的所有属性
所以我的问题是
- 这种情况是如何处理的?我们是否通常强制客户发送所有这些详细信息,无论它们是否更改
- 是否可以仅为特定端点禁用请求正文验证,还是必须创建外观相同但没有验证的单独模型
@PutMapping("/org/employee/{id}")
public void updateEmployee(@RequestBody EmployeeDetailsModel empDetails, @PathVariable("id") int id) {
Optional<Employee> emp = employeeRepo.findById(id);
if (emp.isPresent()) {
// update the new values using setters
// Finally update the resource.
employeeService.updateUser(empDetails);
} else {
throw new ResourceNotFoundException("Your custom msg");
}
}
@PutMapping(“/org/employee/{id}”)
public void updateEmployee(@RequestBody EmployeeDetailsModel empDetails,@PathVariable(“id”)int-id){
可选emp=employeeRepo.findById(id);
if(emp.isPresent()){
//使用setter更新新值
//最后更新资源。
employeeService.updateUser(empDetails);
}否则{
抛出新的ResourceNotFoundException(“您的自定义消息”);
}
}
存储库代码应该放在服务方法ie updateUser中,但我把它放在这里只是为了演示。以前不是开发人员,但我从未见过RESTful服务使用补丁,但显然有这样的东西。跟随帮助我得到了一个想法