springboot-请求参数

784 阅读3分钟

分类

有两种 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);
	}