1. 常见的接口请求类型:



       常见的接口有如下四种类型,分别是含有查询参数的接口,表单类型的接口,json类型的接口以及含有上传文件的接口。

1.1 含有查询参数的

常见的接口请求类型和@RequestBody、@RequestParam的使用_RequestBody

1.2 表单类型的

常见的接口请求类型和@RequestBody、@RequestParam的使用_java_02

1.3 json 类型的

常见的接口请求类型和@RequestBody、@RequestParam的使用_java_03

1.4 包含上传文件的

常见的接口请求类型和@RequestBody、@RequestParam的使用_post_04

2. @RequestParam、@RequestBody

2.1 @RequestParam

   @RequestParam主要用于将请求参数区域的数据映射到控制层方法的参数上。
   @RequestParam用来处理 Content-Type 为 application/x-www-form-urlencoded 编码的内容,Content-Type默认为该属性。
   @RequestParam也可用于其它类型的请求,例如:POST、DELETE等请求。

2.2 @RequestBody

       注解@RequestBody接收的参数是来自requestBody中,即请求体。一般用于处理非 Content-Type: application/x-www-form-urlencoded编码格式的数据,比如:application/json、application/xml等类型的数据。

       一般情况下后端会有一个参数实体类加上 @RequestBody 注解来接收 application/json 请求类型的数据。如果请求是 application/json 类型,对应的实体类没有加 @RequestBody 注解,就会接不到相关参数。

2.3 案例

(1) post 请求 application/json 类型 body 中的请求体数据和 拼在 url 后面的参数是可以同时存在的:

常见的接口请求类型和@RequestBody、@RequestParam的使用_java_05


常见的接口请求类型和@RequestBody、@RequestParam的使用_RequestParam_06

后端接口这样接收数据:

@PostMapping("updateTableDataDL")
public AjaxResult updateTableDataDL(@RequestBody List<TableDataParam> dataParamList, String rowGuid) {
int result = 0;
try {
result = reportTableService.updateTableDataDL(dataParamList, rowGuid);
} catch (Exception e) {
logger.error(e.getMessage());
}
return toAjax(result);
}

(2)文件上传请求携带表单的其他参数

常见的接口请求类型和@RequestBody、@RequestParam的使用_RequestBody_07


后端接口这样接收数据:

@PostMapping("/add")
public AjaxResult addcar(TzCar tzCar, HttpServletRequest request) {
// 返回此车辆的 rowGuid
int result = 0;
try {
result = tzCarService.insertTzCar(tzCar, request);
} catch (Exception e) {
logger.error(e.getMessage());
return AjaxResult.error(e.getMessage());
}
return toAjax(result);
}

  其中 TzCar 就是表单的其他参数封装的参数实体类,两个文件 file1、file2 是在 HttpServletRequest 中接收。具体解析可以看这边​​多个文件上传+表单数据同时请求的前后端处理​​  
暂时到这里、后续再更新