@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或者是博客園都在用它,這里就不貼圖了,經常瀏覽博客和新聞都能看到。
最后,你如果問我哪種方式比較好,我的回答是,根據業務場景的需求決定使用其中一種或者是結合使用。不過它們都有一個共同點,那就是都是可見。