進(jìn)入百度首頁seo優(yōu)化技術(shù)廠家
目錄
一、@RequestParam
二、@RequestBody
三、@PathVariable
四、@RequestHeader
五、@RequestAttribute
六、@RequestPart
七、@Valid
一、@RequestParam
1.作用
- 用于將請(qǐng)求中的 查詢參數(shù) 或 表單參數(shù) 綁定到方法的參數(shù)上。
- 支持 GET 和 POST 請(qǐng)求。
2.使用方法
@GetMapping("/search")
public ResponseEntity<List<Item>> searchItems(@RequestParam(value = "keyword", required = false) String keyword,@RequestParam(value = "page", defaultValue = "1") int page) {// 業(yè)務(wù)邏輯
}
3.屬性說明
value
或name
:參數(shù)名,對(duì)應(yīng)請(qǐng)求中的參數(shù)鍵名,變量名與參數(shù)名相同時(shí)可省略。required
:是否為必需參數(shù),默認(rèn)值為true
。如果設(shè)置為false
,當(dāng)參數(shù)缺失時(shí),方法不會(huì)報(bào)錯(cuò)。defaultValue
:參數(shù)的默認(rèn)值,當(dāng)請(qǐng)求中未包含該參數(shù)時(shí)使用。
二、@RequestBody
1.作用
-
用于將請(qǐng)求體中的 JSON 數(shù)據(jù) 綁定到方法的參數(shù)上。
-
常用于處理 POST、PUT、PATCH 請(qǐng)求。
2.使用方法
@PostMapping("/users")
public ResponseEntity<User> createUser(@RequestBody User user) {// 業(yè)務(wù)邏輯
}
3.屬性說明
required
:是否為必需參數(shù),默認(rèn)值為true
。如果設(shè)置為false
,當(dāng)請(qǐng)求體為空時(shí),參數(shù)值為null
。
三、@PathVariable
1.作用
- 用于將 URL 路徑中的變量 綁定到方法的參數(shù)上。
- 常用于 RESTful 風(fēng)格的接口。
2.使用方法
@GetMapping("/users/{id}")
public ResponseEntity<User> getUser(@PathVariable("id") Long id) {// 業(yè)務(wù)邏輯
}
3.屬性說明
value
或name
:路徑變量的名稱,對(duì)應(yīng){}
中的變量名。required
:是否為必需參數(shù),默認(rèn)值為true
。
四、@RequestHeader
1.作用
- 用于將 請(qǐng)求頭信息 綁定到方法的參數(shù)上。
2.使用方法
@GetMapping("/profile")
public ResponseEntity<User> getProfile(@RequestHeader("Authorization") String token) {// 業(yè)務(wù)邏輯
}
3.屬性說明
value
或name
:請(qǐng)求頭的名稱。required
:是否為必需參數(shù),默認(rèn)值為true
。defaultValue
:當(dāng)請(qǐng)求頭缺失時(shí)的默認(rèn)值。
五、@RequestAttribute
1.作用
- 用于將 請(qǐng)求范圍內(nèi)的屬性 綁定到方法的參數(shù)上。
- 這些屬性通常由攔截器或過濾器預(yù)先設(shè)置。
2.使用方法
@GetMapping("/order")
public ResponseEntity<Order> getOrder(@RequestAttribute("userId") Long userId) {// 業(yè)務(wù)邏輯
}
3.屬性說明
value
或name
:屬性的名稱。required
:是否為必需參數(shù),默認(rèn)值為true
。
4.示例
攔截器設(shè)置:
public class AuthInterceptor extends HandlerInterceptorAdapter {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {Long userId = // 從請(qǐng)求中解析用戶IDrequest.setAttribute("userId", userId);return true;}
}
六、@RequestPart
1.作用
- 用于接收
multipart/form-data
請(qǐng)求中的特定部分,常用于文件上傳。 - 與
@RequestParam
不同,@RequestPart
支持解析復(fù)雜的對(duì)象和文件。
2.使用方法
@PostMapping("/upload")
public ResponseEntity<?> uploadFile(@RequestPart("file") MultipartFile file,@RequestPart("description") String description) {// 業(yè)務(wù)邏輯
}
3.屬性說明
value
或name
:請(qǐng)求部分的名稱。required
:是否為必需參數(shù),默認(rèn)值為true
。
七、@Valid
1.簡(jiǎn)介
作用:用于觸發(fā)對(duì)參數(shù)對(duì)象的驗(yàn)證。
使用場(chǎng)景:與參數(shù)對(duì)象(如實(shí)體類、DTO)配合使用。
常用的驗(yàn)證注解包括:
@NotNull
:字段不能為空@NotEmpty
:集合、字符串等不能為空@NotBlank
:字符串不能為空白字符@Size
:指定集合、數(shù)組、字符串的長(zhǎng)度范圍@Min
、@Max
:指定數(shù)值的最小值和最大值@Email
:郵箱格式驗(yàn)證@Pattern
:正則表達(dá)式匹配
2.使用方法
public class UserDTO {@NotBlank(message = "用戶名不能為空")private String username;@Email(message = "郵箱格式不正確")private String email;@Size(min = 6, max = 20, message = "密碼長(zhǎng)度必須在6到20位之間")private String password;// Getters and Setters
}
@PostMapping("/register")
public ResponseEntity<?> register(@Valid @RequestBody UserDTO userDTO, BindingResult result) {if (result.hasErrors()) {// 處理驗(yàn)證錯(cuò)誤String errorMessage = result.getAllErrors().get(0).getDefaultMessage();return ResponseEntity.badRequest().body(errorMessage);}// 業(yè)務(wù)邏輯
}
3.異常處理
BindingResult
接口:
- 用于獲取驗(yàn)證結(jié)果,必須緊跟在被
@Valid
注解的參數(shù)后面。 - 可用于判斷驗(yàn)證是否通過,獲取錯(cuò)誤信息。
全局異常處理:
可以使用 @ControllerAdvice
和 @ExceptionHandler
注解,統(tǒng)一處理驗(yàn)證異常。
@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);}
}