深圳专业的网站建设,东莞产品网络推广,校园二手交易网站设计的原则,温州建设工程网站目录
一、RequestParam
二、RequestBody
三、PathVariable
四、RequestHeader
五、RequestAttribute
六、RequestPart
七、Valid
一、RequestParam
1.作用
用于将请求中的 查询参数 或 表单参数 绑定到方法的参数上。支持 GET 和 POST 请求。
2.使用方法
GetMappin…目录
一、RequestParam
二、RequestBody
三、PathVariable
四、RequestHeader
五、RequestAttribute
六、RequestPart
七、Valid
一、RequestParam
1.作用
用于将请求中的 查询参数 或 表单参数 绑定到方法的参数上。支持 GET 和 POST 请求。
2.使用方法
GetMapping(/search)
public ResponseEntityListItem searchItems(RequestParam(value keyword, required false) String keyword,RequestParam(value page, defaultValue 1) int page) {// 业务逻辑
}3.属性说明
value 或 name参数名对应请求中的参数键名变量名与参数名相同时可省略。required是否为必需参数默认值为 true。如果设置为 false当参数缺失时方法不会报错。defaultValue参数的默认值当请求中未包含该参数时使用。
二、RequestBody
1.作用 用于将请求体中的 JSON 数据 绑定到方法的参数上。 常用于处理 POST、PUT、PATCH 请求。
2.使用方法
PostMapping(/users)
public ResponseEntityUser createUser(RequestBody User user) {// 业务逻辑
}3.属性说明
required是否为必需参数默认值为 true。如果设置为 false当请求体为空时参数值为 null。
三、PathVariable
1.作用
用于将 URL 路径中的变量 绑定到方法的参数上。常用于 RESTful 风格的接口。
2.使用方法
GetMapping(/users/{id})
public ResponseEntityUser getUser(PathVariable(id) Long id) {// 业务逻辑
}3.属性说明
value 或 name路径变量的名称对应 {} 中的变量名。required是否为必需参数默认值为 true。
四、RequestHeader
1.作用
用于将 请求头信息 绑定到方法的参数上。
2.使用方法
GetMapping(/profile)
public ResponseEntityUser getProfile(RequestHeader(Authorization) String token) {// 业务逻辑
}3.属性说明
value 或 name请求头的名称。required是否为必需参数默认值为 true。defaultValue当请求头缺失时的默认值。
五、RequestAttribute
1.作用
用于将 请求范围内的属性 绑定到方法的参数上。这些属性通常由拦截器或过滤器预先设置。
2.使用方法
GetMapping(/order)
public ResponseEntityOrder getOrder(RequestAttribute(userId) Long userId) {// 业务逻辑
}3.属性说明
value 或 name属性的名称。required是否为必需参数默认值为 true。
4.示例
拦截器设置
public class AuthInterceptor extends HandlerInterceptorAdapter {Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {Long userId // 从请求中解析用户IDrequest.setAttribute(userId, userId);return true;}
}六、RequestPart
1.作用
用于接收 multipart/form-data 请求中的特定部分常用于文件上传。与 RequestParam 不同RequestPart 支持解析复杂的对象和文件。
2.使用方法
PostMapping(/upload)
public ResponseEntity? uploadFile(RequestPart(file) MultipartFile file,RequestPart(description) String description) {// 业务逻辑
}3.属性说明
value 或 name请求部分的名称。required是否为必需参数默认值为 true。
七、Valid
1.简介
作用用于触发对参数对象的验证。
使用场景与参数对象如实体类、DTO配合使用。
常用的验证注解包括
NotNull字段不能为空NotEmpty集合、字符串等不能为空NotBlank字符串不能为空白字符Size指定集合、数组、字符串的长度范围Min、Max指定数值的最小值和最大值Email邮箱格式验证Pattern正则表达式匹配
2.使用方法
public class UserDTO {NotBlank(message 用户名不能为空)private String username;Email(message 邮箱格式不正确)private String email;Size(min 6, max 20, message 密码长度必须在6到20位之间)private String password;// Getters and Setters
}PostMapping(/register)
public ResponseEntity? register(Valid RequestBody UserDTO userDTO, BindingResult result) {if (result.hasErrors()) {// 处理验证错误String errorMessage result.getAllErrors().get(0).getDefaultMessage();return ResponseEntity.badRequest().body(errorMessage);}// 业务逻辑
}3.异常处理
BindingResult 接口
用于获取验证结果必须紧跟在被 Valid 注解的参数后面。可用于判断验证是否通过获取错误信息。
全局异常处理
可以使用 ControllerAdvice 和 ExceptionHandler 注解统一处理验证异常。
RestControllerAdvice
public class GlobalExceptionHandler {ExceptionHandler(MethodArgumentNotValidException.class)public ResponseEntity? handleValidationException(MethodArgumentNotValidException ex) {String errorMessage ex.getBindingResult().getAllErrors().get(0).getDefaultMessage();return ResponseEntity.badRequest().body(errorMessage);}
}