SpringBoot @ResponseBody、@RequestBody和@RequestParam 基本介紹
阿新 • • 發佈:2020-12-22
SpringBoot @ResponseBody、@RequestBody和@RequestParam 基本介紹
這三個註解主要用於前後端分離架構中 SpringBoot 接收或者傳輸特定格式資料,現在重新捋一遍。
1、@ResponseBody
位置:註解在方法頭上
作用:將方法的返回值以 json/xml
的資料格式返回給客戶端,如果是JavaBean
物件,呼叫 getxxx()
方法獲取屬性值,如果是 map
集合,呼叫 get(key)
方法獲取屬性值,然後以鍵值對的方式轉成 json字串
。
@GetMapping(value = "/findById") //註解在方法頭上,返回 json/xml @ResponseBody public Result findById(@RequestParam Long id) { User user = userService.findById(id); return ResultUtil.success(user); }
列印結果如下
沒有該註解的影響:將返回一個ModelAndView
給客戶端,即返回檢視,常用的場景是跳轉 jsp 頁面。
提示沒有該頁面。
2、@RequestBody
位置:註解在方法的形參前
作用:接收 json/xml
封裝成 JavaBean 物件或者集合,注意 xml
格式的支援需要新增額外的依賴。
@GetMapping(value = "/findById") @ResponseBody // 註解在形參前,用於接收 json/xml public Result findById(@RequestBody User testUser) { User user = userService.findById(testUser.getId()); return ResultUtil.success(user); }
傳參格式如下:
注意點:如果是前端頁面傳參時,需要手動設定 contentType: "application/json"
,預設的為 ``application/x-www-form-urlencoded`。
沒有該註解的影響:JavaBean 物件或集合將無法接收 json/xml
3、@RequestParam
位置:註解在方法的形參前
作用:用於接收基本資料型別及其包裝類。 通過value
屬性指定傳參名稱,required
屬性指定是否必傳,預設為必傳,defaultValue
屬性指定預設值。
@GetMapping(value = "/findById") @ResponseBody //常用於接收基本資料型別及其包裝類 public Result findById(@RequestParam(value = "id", required = true, defaultValue = "2") Long id) { User user = userService.findById(id); return ResultUtil.success(user); }
傳參格式如下:
注意點:只能使用基本資料型別及其包裝類接收資料。
沒有該註解的影響:該註解不為必寫屬性,如果想對引數進行限制可使用。