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 请求参数校验] 该文观点仅代表作者本人,今日霍州系信息发布平台,霍州网仅提供信息存储空间服务。

猜你喜欢

雪碧圈、皮蛋圈也撑不住了?格林尼治最新回收行情居然...(雪碧气球)

这一产量数据比许多人想象的要高,直接影响了格林尼治等热门型号的市场稀缺性认知。品牌亲自下场参与二手市场,改变了格林尼治等型号的流通生态,也向市场传递了官方对二手交易的态度。 劳力士并未因市场波动而减少对格…

雪碧圈、皮蛋圈也撑不住了?格林尼治最新回收行情居然...(雪碧气球)

视贝H型灯管四针55W24W40W平4针吸顶灯管如何选择最合适的?2026年最新推荐!(视贝led照明价格表)

面对市场上众多视贝H型灯管型号,许多消费者困惑如何挑选。本文结合2026最新趋势,从亮度、显色指数、能耗等多维度解读视贝H型灯管特点,帮助您根据家居环境需求找到最佳选择。预算有限?想追求高性价比?看完你就知道。

视贝H型灯管四针55W24W40W平4针吸顶灯管如何选择最合适的?2026年最新推荐!(视贝led照明价格表)

推荐靠谱的石牌坊定制工厂排行:旭磊石材怎么选(石牌是什么地方)

在传统建筑艺术与现代景观设计的交汇点上,石牌坊作为承载文化记忆的立体符号,其定制需求正以年均12.3%的速度增长(中国石材协会2023年数据)。 对比传统厂商&quot;交付即终点&quot;的模式,旭磊的『工程师』会在安装后第

推荐靠谱的石牌坊定制工厂排行:旭磊石材怎么选(石牌是什么地方)

特朗普吹嘘美军颜值:个个都是“汤姆·克鲁斯”,只是更高大了些,说完自己都笑了(特朗普吹牛)

特朗普吹嘘美军颜值:个个都是“汤姆·克鲁斯”,只是更高大了些,说完自己都笑了(特朗普吹牛)

安装欧派智能线型浴霸风暖蜂窝大板吊顶线性暖风机,如何选择适合石膏板卫生间🚻的照明排?(欧派全屋智能家居)

面对市场琳琅满目的浴霸产品,如何在2026年选择适合自家石膏板卫生间🚻的欧派智能线型浴霸风暖蜂窝大板吊顶线性暖风机?本文从预算、配置到使用细节全面解析,助您轻松找到理想方案,让冬日洗澡不再寒冷。

安装欧派智能线型浴霸风暖蜂窝大板吊顶线性暖风机,如何选择适合石膏板卫生间🚻的照明排?(欧派全屋智能家居)