概要
时间:2021-07-25
学习内容: 前后端数据传输格式
内容输出:
- 学习笔记
- 代码demo
1.学习笔记
1)学习postman之前须知小知识
1.现在越来越多的项目采用前后端分离的架构,即:
- 后端人员先书写网页端相关的API文档
- 前后端人员根据该API文档内容并行开发(后端人员根据入参处理相关数据后拼接对应json格式数据返回;前端人员在接口还未开发完成之前mock对应数据开发,否,则直接使用返回数据)
- 前后端联调,调整API文档内容以及相应代码,以符合业务需求
其优点主要是:可以前后端并行开发,提高研发效率!
2.基于上述情况,Postman应运而生,其主要功能是:后端研发人员用于校验自己所开发的接口是否符合自己预期效果。简而言之就是,你给我对应的入参,我返回给你相应格式的出参。
2)postman使用频率最高的几种调用方式汇总
一、get调用
添加代码:
/**
* 测试 GetMapping 地址栏传输参数
* @param request
* @return
*/
@GetMapping("/test01")
public void test01(HttpServletRequest request) {
String username = request.getParameter("username");
String age = request.getParameter("age");
String sex = request.getParameter("sex");
log.info("{}-{}-{}-{}", "GetMapping-获取到的信息", username, age, sex);
}
Postman调用:

后端接收输出:

二、post调用
1. PostMapping form-data传输参数
添加代码:
/**
* 测试 PostMapping form-data传输参数
* @param request
* @return
*/
@PostMapping("/test02")
public void test02(HttpServletRequest request) {
String username = request.getParameter("username");
String age = request.getParameter("age");
String sex = request.getParameter("sex");
log.info("{}-{}-{}-{}", "PostMapping-获取到的信息", username, age, sex);
}
Postman调用:

后端接收输出:

补充,指定参数接收的形式,代码:
/**
* 测试 PostMapping form-data传输参数数 指定参数接收的形式
* @return
*/
@PostMapping("/test05")
public void test05(String username, String age, String sex) {
log.info("{}-{}-{}-{}", "PostMapping-获取到的信息", username, age, sex);
}
2. PostMapping raw+json格式传输参数
错误的接收方式示例
添加代码:
/**
* 测试 PostMapping raw json格式传输参数 错误的接收方式
* @param request
* @return
*/
@PostMapping("/test03")
public void test03(HttpServletRequest request) {
String username = request.getParameter("username");
String age = request.getParameter("age");
String sex = request.getParameter("sex");
log.info("{}-{}-{}-{}", "PostMapping-获取到的信息", username, age, sex);
}
Postman调用:

入参:
{
"username":"zwd",
"age":"26",
"sex":"男"
}
后端接收输出:

这个时候你会产生一个疑问:为什么会接收不到参数呢?
网上查了原因,大致如下:
1)普通的表单请求,如form-data的执行过程是:
POST表单请求 --> name=xxx&age=xxx,服务器能处理,存入Map --> request.getParameter()
2)而json格式请求的数据,需要明确以JSON格式解析,即需要添加如:@RequestBody 在指定对象参数前面,具体操作如下:
正确的接收方式示例
添加代码:
/**
* 测试 PostMapping raw + json格式传输参数 正确的接收方式
* @param userVO
* @return
*/
@PostMapping("/test04")
public void test04(@RequestBody UserVO userVO) {
String username = userVO.getUsername();
int age = userVO.getAge();
String sex = userVO.getSex();
log.info("{}-{}-{}-{}", "PostMapping-获取到的信息", username, age, sex);
}
Postman调用:

入参:
{
"username":"zwd",
"age":26,
"sex":"男"
}
后端接收输出:

3. PostMapping 含文件传输
添加代码:
/**
* 测试 PostMapping form-data传输参数 文件传输
* @param request
* @return
*/
@PostMapping("/test06")
public void test06(HttpServletRequest request, MultipartFile multipartFile) {
String username = request.getParameter("username");
String age = request.getParameter("age");
String sex = request.getParameter("sex");
String originalFilename = multipartFile.getOriginalFilename();
log.info("{}-{}-{}-{}-{}", "PostMapping-获取到的信息", username, age, sex, originalFilename);
}
Postman调用:

后端接收输出:

包含文件上传的请求,文件信息会被单独封装在一个MultipartFile对象中,我们只要从这个对象中获取对应的文件名或输出流就好了!
还有,此时不是json方式提交,所以不需要加@RequestBody,加了反而会报错!
4. 附加内容-关于编码中Content-Type配置错误导致的报错汇总
我们在后端自己写代码的时候需要特别注意头部这个参数:Content-Type,有时候一些奇奇怪怪的报错往往都是因为这个参数写错导致的,就是前端传的编码类型和后端接收的编码类型不同!


这里列举几种常用的:
- application/json : JSON数据格式
- multipart/form-data : 需要在表单中进行文件上传时,就需要使用该格式
- application/x-www-form-urlencoded : 中默认encType,form表单数据被编码为key/value格式发送到服务器(表单默认的提交数据的格式)
最后附上一张大佬整理的图:

最后附上学习原文链接(不过好像是要购买专栏,大家看需要哈)
链接: 前后端数据传输格式(上)
2.代码demo
链接: https://pan.baidu.com/s/12KhDL7bNbRJkIz8Zc1ZAdQ
提取码:ing8

400

被折叠的 条评论
为什么被折叠?



