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

猜你喜欢

『巩俐』也没想到,那个她恋了8年没得到的男人,又破了电影圈的神话(『巩俐』 没有)

若是『张艺谋』知道,『巩俐』在与他分手后又结了两次婚,并且移居国外,最终与一个外国人走到了一起,一生未曾生育孩子……他会后悔吗?或许,『巩俐』也在心中暗自期待,『张艺谋』的这部作品会让她再次感受到那个曾经让她动心的男人的光芒…

『巩俐』也没想到,那个她恋了8年没得到的男人,又破了电影圈的神话(『巩俐』 没有)

段誉为何出家?看看王语嫣与他儿子们做了什么你就懂了,很丢脸(段誉为什么中毒)

按理说,像他这样的人应该会掌控一切,享受荣华富贵,但为何他晚年却会选择出家,隐匿在天龙寺,与青灯古佛为伴呢?在此之前,段誉或许还沉浸在爱欲的纠缠中,但当王语嫣离开后,他的心境逐渐清明,为他后来的出家生活奠定了…

段誉为何出家?看看王语嫣与他儿子们做了什么你就懂了,很丢脸(段誉为什么中毒)

金瓶梅》为何杨思敏版30年不过时?情色之外,是无人敢提的女性♀️宿命(金瓶梅为什么是四大奇著而不是四大名著)

二、影视作品对性别平等观念的传递1.传统观念的挑战影视作品中的女性♀️角色塑造逐渐多元化,这一变化不仅仅是角色形象的转变,更重要的是对传统性别观念的挑战和重塑。 现代影视作品中,女性♀️角色不再是单一的“贤妻良母…

《<strong>金瓶梅</strong>》为何杨思敏版30年不过时?情色之外,是无人敢提的女性♀️宿命(金瓶梅为什么是四大奇著而不是四大名著)

浙产微短剧开年“三连击”!佳作不断,你追了几部?

燎原之烽火1945》《原罪2》《楝树花开之我本不凡》3部新作接连登陆各大平台,题材涵盖红色历史、现实悬疑、非遗创新,以多元表达和精良制作,持续丰富观众的精神文化生活。 从热血历史到现实悬疑,再到非遗创新,浙…

浙产微短剧开年“三连击”!佳作不断,你追了几部?

全球抛售美国 美元💵跌势难止(全球抛售美债的结果)

美国财政部长斯科特·贝森特确认了“强势美元💵政策”,但未能阻止美元💵的跌势。1月29日,美元💵指数一度下跌至96.03,跌幅约为0.3%。彭博新闻社报道指出,美元💵再次下跌的原因是投资者担心美元💵购买力将长期下降,转而寻求其他替代资产

全球抛售美国 美元💵跌势难止(全球抛售美债的结果)