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

猜你喜欢

TVB绿叶澄清无离巢!转战内地发展成功爆红,力证无忘恩仍在拍戏

不过对于大家的疑问,近日姚亦澧也是更新了动态,并向大家澄清了外界猜测他离巢一事,他直言自己一直还在TVB,并且也都是有回TVB参与剧集的拍摄。 看来如今的姚亦澧虽然在内地已经是小有名气,不过他始终没有放弃幕…

TVB绿叶澄清无离巢!转战内地发展成功爆红,力证无忘恩仍在拍戏

VGN周听系列电竞耳机发布:199元起,三合一RGB基站加持

12 月 15 日消息,VGN 现已推出周听系列头戴式电竞耳机,搭载 53mm 铝箔沙金单元,自带三合一全能 RGB 基站,售价199 元起。 据介绍,这款耳机拥有《三角洲行动》主播林树特调音效,…

VGN周听系列电竞耳机发布:199元起,三合一RGB基站加持

升级版天然樟脑丸:2025衣柜防霉防蛀驱虫新趋势如何选?(天然樟脑主要成分)

随着消费升级和健康意识提升,天然樟脑丸成为2025年衣柜驱虫首选。它不仅防霉防蛀,还能消除异味、清新空气,帮助保存衣物品质。本文教你如何根据需求挑选优质产品,并避开选购误区,轻松打造整洁舒适的家庭环境。

升级版天然樟脑丸:2025衣柜防霉防蛀驱虫新趋势如何选?(天然樟脑主要成分)

瑞安·墨菲看过了《某种物质》(The Substance),于是决定拍自己的身体恐怖剧集。《The Beauty》首张海报公布,这是对Image漫画的改编剧集,主演阵容包括埃文·彼得斯、丽贝卡·霍尔、阿什顿·库彻、贝拉·哈迪德、安东尼·拉莫斯和杰里米·波普

首播。…

瑞安·墨菲看过了《<strong>某种物质</strong>》(The Substance),于是决定拍自己的身体恐怖剧集。《<strong>The Beauty</strong>》首张海报公布,这是对Image漫画的改编剧集,主演阵容包括埃文·彼得斯、丽贝卡·霍尔、阿什顿·库彻、贝拉·哈迪德、安东尼·拉莫斯和杰里米·波普

『王楚然』穿黑丝上热搜,网友吵翻天,背后其实是行业在推她(『王楚然』 『穿搭』)

这件事发生后,许多人开始讨论一个话题:为什么女『明星』️穿得稍微暴露一些就会被批评,而男『明星』️穿紧身裤却很少有人关注?实际上,去年已经有几位女『明星』️尝试过类似的造型,每一次都引发了争议,说明这并非偶然现象,而是行…

『王楚然』穿黑丝上热搜,网友吵翻天,背后其实是行业在推她(『王楚然』 『穿搭』)