@RequestParam和@PathVariable的區別及其應用場景


@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或者是博客園都在用它,這里就不貼圖了,經常瀏覽博客和新聞都能看到。

 

最后,你如果問我哪種方式比較好,我的回答是,根據業務場景的需求決定使用其中一種或者是結合使用。不過它們都有一個共同點,那就是都是可見。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM