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

猜你喜欢

TAG Heuer 泰格豪雅携群星共赴竞速之约 焕新演绎先锋时计传奇(TAG Heuer 泰格豪雅 Autavia)

泰格豪雅总部位于瑞士拉绍德封 (La Chaux-de-Fonds),目前坐拥四家生产基地和1,900名员工,业务遍及全球139个国家。如今,品牌的核心产品阵容包括泰格豪雅摩纳哥系列 (Monaco)、卡莱…

TAG Heuer 泰格豪雅携群星共赴竞速之约 焕新演绎先锋时计传奇(TAG Heuer 泰格豪雅 Autavia)

林路:新闻摄影师和哲学家(新闻摄影师)

摄影家赫尔穆特·牛顿说,知识分子热衷于讨论摄影的意义,于是摄影师按下快门的手越来越犹豫。 他的意思是,人们对于摄影的思考越来越趋向理性,或者说拍摄时考虑太多,试图赋予照片太多的意义,结果反而局限了摄影的想象空…

林路:新闻摄影师和哲学家(新闻摄影师)

潜水装备背后的守护者:Christo-Lube MCG 129 &amp; 111润滑剂(潜水装具)

Christo-Lube MCG 129和111是一种专为潜水调节器设计的润滑剂,旨在延长设备寿命并提升性能。本文将探讨这种独特产品的配方构成、应用场景以及其对潜水安全的重要性。

潜水装备背后的守护者:Christo-Lube MCG 129 &amp; 111润滑剂(潜水装具)

许昌胖东来伤人案嫌犯落网 伤者已送医情况稳定(许昌胖东来新建的地址在哪里)

11月2日下午,河南省许昌市胖东来生活广场发生一起故意伤害案件。在魏都区南大街胖东来生活广场一楼大厅入门处,37岁的犯罪嫌疑人冯某某因纠纷将41岁的吴某某和39岁的徐某某夫妻二人致伤

许昌胖东来伤人案嫌犯落网 伤者已送医情况稳定(许昌胖东来新建的地址在哪里)

宜家乌普菲尔德榨汁器:厨房里的创意发明(宜家乌普菲尔德量勺四件套对应的克数)

你是否渴望在清晨的第一杯饮品里加入新鲜榨出的柠檬汁?这款来自宜家的乌普菲尔德榨汁器或许能成为你的秘密武器。本文深入剖析其设计巧思、使用感受及对现代厨房的意义。从多功能性到日常实用性,它究竟如何悄然改变着人们的生活?

宜家乌普菲尔德榨汁器:厨房里的创意发明(宜家乌普菲尔德量勺四件套对应的克数)