@RequestParam和@PathVariable這兩者之間差別不大,主要是請求的URL不一樣
用@RequestParam請求接口時,URL是:
http://www.test.com/user/getUserById?userId=1 用@PathVariable請求接口時,URL是: http://www.test.com/user/getUserById/2 (1)@PathVariable示例:@GetMapping(value="getUserById/{userId}",produces="application/json;charset=utf-8")
public Object getUserById(@PathVariable String userId) {
JSONObject json = new JSONObject();
if(!StrUtil.isEmpty(userId)) {
User user = userService.getUserById(userId);
json.put("returnCode", "000000");
json.put("returnMsg", "success");
json.put("user", user);
}else {
json.put("returnCode", "111111");
json.put("returnMsg", "error");
}
return json;
}
主要應用場景是:不少應用為了實作RestFul的風格,采用@PathVariable這種方式。
例如CSDN:
當然了,有些時候也不是為了RestFul風格而采用這種方式,有些時候覺得?userId=1&&status=1等參數傳遞方式不是特别好看或者是看着不爽。
(2)@RequestParam示例:
@GetMapping(value="getUserById",produces="application/json;charset=utf-8")
public Object getUserById(@RequestParam String userId) {
JSONObject json = new JSONObject();
if(!StrUtil.isEmpty(userId)) {
User user = userService.getUserById(userId);
json.put("returnCode", "000000");
json.put("returnMsg", "success");
json.put("user", user);
}else {
json.put("returnCode", "111111");
json.put("returnMsg", "error");
}
return json;
}
應用場景:這種方式應用也非常廣,像CSDN或者是部落格園都在用它,這裡就不貼圖了,經常浏覽部落格和新聞都能看到。
最後,你如果問我哪種方式比較好,我的回答是,根據業務場景的需求決定使用其中一種或者是結合使用。不過它們都有一個共同點,那就是都是可見。