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);
}
傳參格式如下:

注意點:只能使用基本數據類型及其包裝類接收數據。
沒有該注解的影響:該注解不為必寫屬性,如果想對參數進行限制可使用。
