Spring Validation 请求参数校验

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

猜你喜欢

色是一把刀,“纵欲过度”的萧亚轩,终究走到了这一步!(色是头上一把刀下句是什么)

她与王阳明交往了两年,分手时他年仅24岁;和毛加恩的恋情也在短短三个月后画上句号,彼时他也才24岁;与柯震东相恋,两人相差12岁,公开恋情到分手不过两年多。分手后的黄皓迅速进入了婚姻生活,并育有一子,反观萧亚…

色是一把刀,“纵欲过度”的萧亚轩,终究走到了这一步!(色是头上一把刀下句是什么)

接棒《歌手2025》的音综来了,蔡依林、阿云嘎等全明星阵容(歌手2020视频)

这一形式也在《歌手》节目中有所呈现,但《打歌2025》却通过每期精选的新歌,确保了节目内容的新鲜感和时效性,真正满足了当下音乐市场对新作品的渴求。 尽管如此,《打歌2025》仍然是一档值得期待的节目,它通过每…

接棒《歌手2025》的音综来了,蔡依林、阿云嘎等全明星阵容(歌手2020视频)

费翔:被姐姐改变人生,为姥姥被封杀,因父母选择孤独一生(费翔姊妹几个)

费翔穿的衣服全是妈妈买来的,他没有穿过非常前卫的衣服。 李梦白是毕丽娜的妈妈,也就是费翔的姥姥。总之,费翔在春晚上唱的那首《冬天里的一把火》,成功点燃无数少女的芳心。 名声大噪的费翔还收到以前在台经济公司…

费翔:被姐姐改变人生,为姥姥被封杀,因父母选择孤独一生(费翔姊妹几个)

被传第7次遭封杀后,久居法国的金星近况被曝,网友:男相毕露!

但让人意想不到的是,这位平时对别人几乎毫不留情的金星,自己也不可避免地卷入了数不胜数的争议之中。这一举动虽然体现了她对少数群体的支持,却也遭到了不少人的反对,认为她在公开场合宣扬一种不被广泛接受的价值观。紧接…

被传第7次遭封杀后,久居法国的金星近况被曝,网友:男相毕露!

昨夜,53岁朱迅撞上46岁侯佩岑,医美老去与自然老去的差距太明显(48岁的朱迅)

她出生于1978年,今年已经46岁,而朱迅则是在1971年出生,今年53岁。两人相差七岁,但在同框时,竟不免给人一种如母女般的错觉,实在令人惊叹。 当晚,再次见到53岁的朱迅与46岁的侯佩岑,两人之间医美与自…

昨夜,53岁朱迅撞上46岁侯佩岑,医美老去与自然老去的差距太明显(48岁的朱迅)