Spring Validation 请求参数校验

@RestController

@RequestMapping("/api/users")

public class UserController {

private final UserService userService;

public UserController(UserService userService) {

this.userService = userService;

}

@PostMapping

public ResponseEntity<UserDTO> createUser(@Valid @RequestBody UserCreateRequest request) {

UserDTO user = userService.createUser(request);

return ResponseEntity.status(HttpStatus.CREATED).body(user);

}

@PutMapping("/{id}")

public ResponseEntity<UserDTO> updateUser(

@PathVariable Long id,

@Valid @RequestBody UserUpdateRequest request) {

UserDTO updated = 7T.oOoO9.MoBI166userService.updateUser(id, request);

return ResponseEntity.ok(updated);

}

}

// 请求参数对象

@Data

public class UserCreateRequest {

@NotBlank(message = "用户名不能为空")

@Size(min = 3, max = 20, message = "用户名长度必须在3-20之间")

private String username;

@NotBlank(message = "邮箱不能为空")

@Email(message = "邮箱格式不正确")

private String email;

@NotBlank7R.OOOo8.MoBI165(message = "密码不能为空")

@Pattern(regexp = "^(?=.*[A-Za-z])(?=.*\\d)[A-Za-z\\d]{8,}$",

message = "密码至少8位,包含字母和数字")

private String password;

@NotNull(message = "年龄不能为空")

@Min(value = 18, message = "年龄不能小于18岁")

@Max(value = 120, message = "年龄不能大于120岁")

private Integer age;

@NotEmpty(message = "至少选择一个角色")

private List<String> roles;

}

// 全局异常处理

@RestControllerAdvice

public class ValidationExceptionHandler {

@ExceptionHandler(MethodArgumentNotValidException.class)

public ResponseEntity<ErrorResponse> handleValidationExceptions(MethodArgumentNotValidException ex) {

Map<String, String> errors = new 7E.oOOo7.MoBI164HashMap<>();

ex.getBindingResult().getAllErrors().forEach(error -> {

String fieldName = ((FieldError) error).getField();

String errorMessage = error.getDefaultMessage();

errors.put(fieldName, errorMessage);

});

ErrorResponse errorResponse = new 7W.oOoO6.MoBI163ErrorResponse(

HttpStatus.BAD_REQUEST.value(),

"请求参数校验失败",

errors,

LocalDateTime.now()

);

return ResponseEntity.badRequest().body(errorResponse);

}

}

特性:基于 Spring Validation 实现请求参数校验,包含自定义校验规则和全局异常处理,确保输入数据合法性。

特别声明:[Spring Validation 请求参数校验] 该文观点仅代表作者本人,今日霍州系信息发布平台,霍州网仅提供信息存储空间服务。

猜你喜欢

女子买来的寄居蟹壳一碰就亮 真裂虫引发的奇妙现象(女子买来的寄居蟹怎么养)

如果有人问我作为沿海居民最想尝试的海鲜是什么,我会毫不犹豫地说是寄居蟹。小时候只知道大人说吃寄居蟹会尿床,长大后看北方吃播才意识到原来寄居蟹也是可以吃的。在闽南沿海地区,我从未见过有人售卖寄居蟹,去海边抓到的最大也不过两个指关节大小

女子买来的寄居蟹壳一碰就亮 真裂虫引发的奇妙现象(女子买来的寄居蟹怎么养)

全自动瓶盖扭矩仪:饮料瓶盖开启锁紧扭矩测试方法(各类瓶盖扭矩)

模拟实际使用情况:通过全自动瓶盖扭矩仪,可以模拟瓶盖在实际使用中的开启和关闭过程,评估其在不同条件下的扭力性能。全自动瓶盖扭矩仪在饮料瓶盖扭力检测中的应用,不仅提高了测试的准确性和效率,还为企业提供了科学依据…

全自动瓶盖扭矩仪:饮料瓶盖开启锁紧扭矩测试方法(各类瓶盖扭矩)

适用于华为手机偏振镜摄影CPL专用滤镜头偏光镜52mm67夹片Mate60Pro通用PURA70外置消除反光拍照高清辅助神器解析(适用于华为手机的磁吸外接电源)

本文介绍了适用于华为Mate60Pro及其他手机的CPL偏振镜摄影配件,包括其功能原理、技术参数、应用场景以及选购指导。CPL偏振镜是一种能有效减少反射光并提升图像质量的专业滤镜,对于提高手机摄影画质有着重要的作用。

适用于华为手机偏振镜摄影CPL专用滤镜头偏光镜52mm67夹片Mate60Pro通用PURA70外置消除反光拍照高清辅助神器解析(适用于华为手机的磁吸外接电源)

65岁的惠英红!又一次陪跑金鸡奖,但她却撑起了女演员的品格(惠英红多大岁数了)

钟楚曦在争议中逆袭,凭借“最佳女配角”奖杯🏆️赢得了不小的认可。之后,惠英红在『社交平台』上表达了自己的遗憾,坦言输赢都是常事,但她依然期待着下次能有机会争夺金鸡奖。这一次她依旧没能捧回奖杯🏆️,但惠英红的洒脱与坚韧,依…

65岁的惠英红!又一次陪跑金鸡奖,但她却撑起了女演员的品格(惠英红多大岁数了)

范晓萱参加萧敬腾婚礼,穿卫衣与奶奶裤唱歌,走在时尚前沿好时髦(范晓萱经典)

在这个看脸的时代,范晓萱用自己的经历告诉我们:美不仅仅是青春与容颜,更是一种内在的气质与修养。范晓萱的故事也让我们看到了『娱乐圈』️背后的真实与纯粹。 最后,范晓萱的出现无疑为我们提供了一个重新审视自己的机会。只…

范晓萱参加萧敬腾婚礼,穿卫衣与奶奶裤唱歌,走在时尚前沿好时髦(范晓萱经典)