分类
有两种 1,表单数据 2,json格式
表单参数
如果前端是表单数据,后台使用注解@RequestParam。 //如果不写,默认就是这个注解
json格式
如果前端是json格式,后台使用注解@RequestBody。
后台数据的本质,以及两种请求数据的区别
后台数据的本质 后台数据的本质,是需要什么样的数据?我们来分析一下,首先,后台最终的数据,都是字段。
如果是表单数据,那么表单字段和后台字段,一一对应。
如果是json数据,本质也是字段一一对应。只不过形式有一些区别。
那有什么区别呢? 一个是请求头,一个是请求体里的数据。
表单是请求头,json是请求体。
除了数据所在的位置有区别,其他就没有区别了。
另外一点,就是后台得到数据之后,解析的问题。 表单,就是字段——字段。
json,除了字段——字段,还有一点就是,json里是有数组和对象的概念的,本质就是有数据类型的概念,[]就表示数组,{}就表示对象,而且可以互相嵌套。json就只有这么一点内容,剩下的就是看后台怎么解析json格式,得到最终的字段。
浏览器 debug模式,看到的数据不一样,一种是key:value或者url?name=value&name=value,一种是json格式(json格式本身是没有name的,包含的数据是name:value)。
客户端-数据类型字段 表单就是form。
json就是json。
后台,本质上是后台服务器,比如tomcat,分两步解析数据: 1.先得到数据类型 2.再解析数据
表单,核心是字段一一对应。
json格式,核心json格式,前端传数据的时候是json格式,后台解析的时候遵循json格式的字符串这个规范来解析数据——当然,最终也是得到字段数据。
总结,就是客户端传参数的时候,只要是基于http协议,那么不管这个客户端是浏览器,还是app(也是基于http开源框架),都是一回事,即包含了两点: 1.数据类型 //请求头有这个字段 2.数据本身 //表单数据是在请求头,json数据是在请求体
应用场景
单笔数据的增删查改,使用表单数据。
批量操作,使用json格式。
因为表单数据必须有name,如果是批量数据,不同的记录不能使用name来区分开。所以前端必须使用json格式,后台必须使用@RequestBody注解。
举例
package com.wz.bpm.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import com.wz.bpm.bean.EmployeeSalary;
import com.wz.bpm.bean.RespBean;
import com.wz.bpm.service.EmployeeSalaryService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@Api(tags = "员工-工资")
@RestController
@RequestMapping("/employeeSalary")
public class EmployeeSalaryController {
@Autowired
private EmployeeSalaryService employeeSalaryService;
@ApiOperation("新增")
@RequestMapping(method = RequestMethod.POST)
public RespBean<EmployeeSalary> insertEmployeeSalary(EmployeeSalary employeeSalary) {
int i = employeeSalaryService.insertEmployeeSalary(employeeSalary);
return RespBean.printResult(i);
}
// @ApiOperation("批量新增")
// @RequestMapping(value="/employeeSalarys", method = RequestMethod.POST)
// public RespBean<EmployeeSalary> insertEmployeeSalarys(@RequestBody List<EmployeeSalary> employeeSalarys) {
// int i = employeeSalaryService.insertEmployeeSalarys(employeeSalarys);
// return RespBean.printResult(i,employeeSalarys.size());
// }
@ApiOperation("更新")
@RequestMapping(method = RequestMethod.PUT)
public RespBean<EmployeeSalary> updateEmployeeSalary(EmployeeSalary employeeSalary) {
int i = employeeSalaryService.updateEmployeeSalary(employeeSalary);
return RespBean.printResult(i);
}
@ApiOperation("批量更新")
@RequestMapping(value="/employeeSalarys", method = RequestMethod.PUT)
public RespBean<EmployeeSalary> updateEmployeeSalarys(@RequestBody List<EmployeeSalary> employeeSalarys) {
int i = employeeSalaryService.updateEmployeeSalarys(employeeSalarys);
return RespBean.printResult(i);
}
@ApiOperation("查看")
@RequestMapping(method = RequestMethod.GET)
public RespBean<EmployeeSalary> getEmployeeSalary(Integer id) {
EmployeeSalary employeeSalary = employeeSalaryService.selectEmployeeSalary(id);
return RespBean.ok(employeeSalary);
}
@ApiOperation("删除")
@RequestMapping(method = RequestMethod.DELETE)
public RespBean<EmployeeSalary> deleteEmployeeSalary(Integer id) {
int i = employeeSalaryService.deleteEmployeeSalary(id);
return RespBean.printResult(i);
}
@ApiOperation("根据员工id,查询所有数据")
@RequestMapping(value="/getEmployeeSalarysByEmployeeId", method = RequestMethod.GET)
public RespBean<EmployeeSalary> getEmployeeSalarysByEmployeeId(Integer employeeId) {
List<EmployeeSalary> employeeSalarys = employeeSalaryService.getAllEmployeeSalarysByEmployeeId(employeeId);
return RespBean.ok(employeeSalarys);
}
}
json格式-分类
1.数组 2.json格式 + 表单数据
数组
前端 [{实体类},{实体类}]
后台 List<实体类> XXX //记得加上注解@RequestBody
json格式 + 表单数据
前端 表单数据+json格式

后台
@ApiOperation("批量更新")
@RequestMapping(value="/employeeContracts", method = RequestMethod.PUT)
public RespBean<EmployeeContract> updateEmployeeContracts(@RequestBody List<EmployeeContract> employeeContracts //json格式,Employee employee //表单数据) {
int i = employeeContractService.updateEmployeeContracts(employeeContracts,employee);
return RespBean.printResult(i);
}