@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 实现请求参数校验,包含自定义校验规则和全局异常处理,确保输入数据合法性。