SpringBoot中@RequestParam @RequestBody @PathVariable的作用

最近兩年工作的主要內容是給前端提供API接口,包括各種聯(lián)調等,項目中使用的框架有spring全家桶、Jfinal等,最近學習了下很火的SpringBoot,配合Swagger2寫Restful接口及文檔非常方便簡潔,一下是一些相關筆記。

@PathVariable

當使用@RequestMapping URI template 樣式映射時,@PathVariable能使傳過來的參數(shù)綁定到路由上,這樣比較容易寫出restful api,看代碼

    @RequestMapping(value="/{id}", method=RequestMethod.GET)
    public List<Map<String, Object>> getUser(@PathVariable Integer id) {
        return userService.getUserById(id);
    }

上面這個接口可通過get請求 http://xxxxx/1111來得到想要的數(shù)據(jù),1111既是getUser的方法參數(shù)又是@RequestMapping的路由。如果方法參數(shù)不想寫成和路由一樣的應該怎么辦?看代碼:

    @RequestMapping(value="/{uid}", method=RequestMethod.GET)
    public List<Map<String, Object>> getUser(@PathVariable("uid") Integer id) {
        return userService.getUserById(id);
    }

在@PathVariable后面接入“uid”就可以了。

@RequestParam

@RequestParam和@PathVariable的區(qū)別就在于請求時當前參數(shù)是在url路由上還是在請求的body上,例如有下面一段代碼:

    @RequestMapping(value="", method=RequestMethod.POST)
    public String postUser(@RequestParam(value="phoneNum", required=true) String phoneNum ) String userName) {
        userService.create(phoneNum, userName);
        return "success";
    }

這個接口的請求url這樣寫:http://xxxxx?phoneNum=xxxxxx,也就是說被@RequestParam修飾的參數(shù)最后通過key=value的形式放在http請求的Body傳過來,對比下上面的@PathVariable就很容易看出兩者的區(qū)別了。

@RequestBody

@RequestBody能把簡單json結構參數(shù)轉換成實體類,如下代碼:

    @RequestMapping(value = "/testUser", method = RequestMethod.POST)
    public String testUser(@RequestBody User user){
        System.out.print(user.getAge());
        return "success";
    }

參數(shù)為:

{"id":1,"user":"pkxutao","name":"name","age":18}

注意請求的content type要設置為application/json

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,534評論 19 139
  • Spring的模型-視圖-控制器(MVC)框架是圍繞一個DispatcherServlet來設計的,這個Servl...
    alexpdh閱讀 2,736評論 0 3
  • 1、Spring MVC請求流程 (1)初始化:(對DispatcherServlet和ContextLoderL...
    拾壹北閱讀 2,010評論 0 12
  • 1、@Controller 在SpringMVC 中,控制器Controller 負責處理由DispatcherS...
    圣光會制裁你丨閱讀 1,718評論 0 23
  • 選擇睡覺還是搶購? 昨晚,和每次搶購的前一晚一樣,我想著要不要等到0點買了再睡呢?想想買這些東西省的錢,最多幾百塊...
    LizzyD閱讀 1,084評論 0 3

友情鏈接更多精彩內容