前后端数据传输-总结001-Postman使用

概要

时间:2021-07-25
学习内容: 前后端数据传输格式

内容输出:

  1. 学习笔记
  2. 代码demo

1.学习笔记

1)学习postman之前须知小知识

1.现在越来越多的项目采用前后端分离的架构,即:

  1. 后端人员先书写网页端相关的API文档
  2. 前后端人员根据该API文档内容并行开发(后端人员根据入参处理相关数据后拼接对应json格式数据返回;前端人员在接口还未开发完成之前mock对应数据开发,否,则直接使用返回数据)
  3. 前后端联调,调整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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值