java后台@RequestBody和@RequestParam
RequestBody 接收的是請求體里面(body)的數據
RequestParam接收的是key-value里面的參數,所以它會被切割進行處理從而可以是普通元素、數組、集合、對象等接收
get---》@RequestParam(),不能用@RequestBody
post---》@RequestParam() & @RequestBody
@RequestBody主要用來接收前端傳遞給后端的json字符串中的數據的(請求體中的數據的);
在后端的同一個接收方法里,@RequestBody與@RequestParam()可以同時使用,@RequestBody最多只能有一個,而@RequestParam()可以有多個。
即:如果參數時放在請求體中,application/json傳入后臺的話,那么后臺要用@RequestBody才能接收到;
如果不是放在請求體中的話,那么后臺接收前臺傳過來的參數時,要用@RequestParam來接收,或者形參前什么也不寫也能接收。
注:如果參數前寫了@RequestParam(xxx),那么前端必須有對應的xxx名字才行,如果沒有xxx名的話,那么請求會出錯,報400。
注:如果參數前不寫@RequestParam(xxx)的話,那么就前端可以有,也可以沒有對應的xxx名字,如果有xxx名的話,那么就會自動匹配;沒有的話,請求也能正確發送。
示例1
@AutoLog(value = "運維工程師-分頁列表查詢")
@GetMapping(value = "/list")
public Result<?> queryPageList(OperatStaff operatStaff,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
HttpServletRequest req) {
QueryWrapper<OperatStaff> queryWrapper = QueryGenerator.initQueryWrapper(operatStaff, req.getParameterMap());
Page<OperatStaff> page = new Page<OperatStaff>(pageNo, pageSize);
IPage<OperatStaff> pageList = operatStaffService.page(page, queryWrapper);
return Result.ok(pageList);
}
示例2
@AutoLog(value = "運維合約管理-添加")
@ApiOperation(value="運維合約管理-添加", notes="運維合約管理-添加")
@PostMapping(value = "/add")
public Result<?> add(@RequestBody OperatContract[] operatContracts) {
for(OperatContract operatContract:operatContracts)
{
operatContractService.save(operatContract);
}
return Result.ok("添加成功!");
}
示例3
@AutoLog(value = "運維合約管理-通過id刪除")
@ApiOperation(value="運維合約管理-通過id刪除", notes="運維合約管理-通過id刪除")
@DeleteMapping(value = "/delete")
public Result<?> delete(@RequestParam(name="id",required=true) String id) {
operatContractService.removeById(id);
return Result.ok("刪除成功!");
}
示例4
@PostMapping(value = "/sms")
public Result<String> sms(@RequestBody JSONObject jsonObject) {
Result<String> result = new Result<String>();
String mobile = jsonObject.get("mobile").toString();
String smsmode=jsonObject.get("smsmode").toString();
log.info(mobile);
Object object = redisUtil.get(mobile);
if (object != null) {
result.setMessage("驗證碼10分鐘內,仍然有效!");
result.setSuccess(false);
return result;
}
https://blog.csdn.net/justry_deng/article/details/80972817/
總結
以上是生活随笔為你收集整理的java后台@RequestBody和@RequestParam的全部內容,希望文章能夠幫你解決所遇到的問題。