1. 程式人生 > 實用技巧 >SpringBoot @ResponseBody、@RequestBody和@RequestParam 基本介紹

SpringBoot @ResponseBody、@RequestBody和@RequestParam 基本介紹

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);
}

傳參格式如下:

注意點:只能使用基本資料型別及其包裝類接收資料。

沒有該註解的影響:該註解不為必寫屬性,如果想對引數進行限制可使用。