• [技术干货] Postman中四种请求体格式用法全解析及SpringBoot接收指南 【转载】
    一、四种请求体格式的核心区别Postman 的 Body 选项中,四种格式的设计初衷和适用场景差异显著,具体如下: 1. Form Data(multipart/form-data)本质:通过“分隔符(boundary)”分割多个键值对的复合格式,支持文本和二进制数据(如文件)。核心特点:每个字段独立成块,包含字段名、内容类型(如文本/文件)等元信息。非 ASCII 字符(如中文、特殊符号)无需手动编码,直接传输原始字节。支持同时传递文本和文件(例如:上传用户头像时,同时传递用户 ID 和昵称)。请求体示例(简化版):12345678910--Boundary123456  // 分隔符(自动生成)Content-Disposition: form-data; name="username"  // 文本字段名 张三  // 字段值(中文无需编码)--Boundary123456Content-Disposition: form-data; name="avatar"; filename="head.jpg"  // 文件字段Content-Type: image/jpeg  // 文件类型 [二进制文件内容]  // 直接传输文件字节--Boundary123456--  // 结束符 2. x-www-form-urlencoded本质:将键值对拼接为字符串(如 key1=value1&key2=value2),并对非 ASCII 字符进行 URL 编码。核心特点:仅支持文本数据,不支持文件传输(因编码后为纯文本,无法承载二进制)。数据体积小,编码后为单一字符串,适合简单表单提交(如登录、搜索框查询)。请求体示例:1username=%E5%BC%A0%E4%B8%89&age=20  // "张三"被URL编码为%E5%BC%A0%E4%B8%89 3. Raw本质:纯文本格式,支持 JSON、XML、HTML 等结构化数据,需手动指定 Content-Type。核心特点:适合传递复杂结构化数据(如 API 接口的 JSON 请求体)。Postman 会根据选择的格式自动设置 Content-Type(例如:选 JSON 则自动添加 application/json 头)。常见场景:后端接口要求接收 JSON 格式的用户信息(如 {"name":"张三","age":20})。 4. Binary本质:二进制数据流,对应 Content-Type: application/octet-stream。核心特点:仅支持单个二进制文件(如上传压缩包、图片),无键值对概念。直接传输文件原始字节,适合纯文件上传场景(如“上传附件”功能)。 二、重点:Form Data 与 x-www-form-urlencoded 的核心区别虽然两者都以键值对形式传输数据,但在编码方式、支持类型、适用场景上有本质区别,具体对比如下:对比维度Form Data(multipart/form-data)x-www-form-urlencoded编码方式用分隔符分割多个字段,每个字段独立成块所有字段拼接为单一字符串,URL编码支持数据类型文本 + 二进制文件(如图片、文档)仅支持文本(无法传输文件)非ASCII字符处理直接传输原始字节(无需编码)强制URL编码(如中文→%E5%BC%A0…)数据体积较大(含分隔符和元信息)较小(纯字符串)适用场景上传文件、混合文本与二进制数据简单表单提交(登录、搜索、参数提交)Spring Boot接收差异支持 MultipartFile 接收文件仅支持文本参数,无法接收文件一句话总结:如果需要传文件,必须用 Form Data;如果只是简单文本提交,x-www-form-urlencoded 更轻量。 三、Postman 中如何设置四种格式 1. Form Data 设置步骤:Body → 选择 form-data → 点击“+”添加键值对。文本参数:默认选“Text”,直接输入键和值(如 username: 张三)。文件参数:选择“File”,点击“Select Files”上传文件(如 avatar: head.jpg)。注意:Postman 会自动添加 Content-Type: multipart/form-data 及分隔符,无需手动设置。 2. x-www-form-urlencoded 设置步骤:Body → 选择 x-www-form-urlencoded → 直接添加键值对(如 name: 张三、age: 20)。注意:Postman 会自动对非 ASCII 字符编码(如“张三”→%E5%BC%A0%E4%B8%89),并设置 Content-Type: application/x-www-form-urlencoded。 3. Raw 设置步骤:Body → 选择 raw → 右侧下拉框选格式(如 JSON)→ 输入对应格式内容(如 {"name":"张三","age":20})。注意:格式需与内容匹配(如选 JSON 就必须输入合法 JSON 字符串)。 4. Binary 设置步骤:Body → 选择 binary → 点击“Select File”选择单个二进制文件(如 test.zip)。注意:一次只能传一个文件,无键名,仅传输文件字节流。 四、Spring Boot 中如何接收四种格式的参数 1. 接收 Form Data(multipart/form-data)适用于文本+文件混合传输,用 @RequestParam 接收文本,MultipartFile 接收文件。12345678910111213@RestControllerpublic class FormDataController {    // 接收文本+文件    @PostMapping("/upload")    public String handleFormData(            @RequestParam("username") String username,  // 文本参数            @RequestParam("avatar") MultipartFile avatar  // 文件参数    ) {        String filename = avatar.getOriginalFilename(); // 获取文件名        long fileSize = avatar.getSize(); // 获取文件大小        return "收到用户:" + username + ",上传文件:" + filename + "(大小:" + fileSize + "字节)";    }} 2. 接收 x-www-form-urlencoded适用于纯文本键值对,直接用 @RequestParam 接收(与 Form Data 的文本参数接收方式一致)。12345678910@RestControllerpublic class UrlEncodedController {    @PostMapping("/submit")    public String handleUrlEncoded(            @RequestParam("name") String name,  // 接收文本参数            @RequestParam("age") Integer age    // 自动转换类型    ) {        return "收到用户:" + name + ",年龄:" + age;    }} 3. 接收 Raw适用于结构化数据(如 JSON、XML),用 @RequestBody 绑定到对象或字符串。12345678910111213141516171819202122232425// 定义接收JSON的实体类public class User {    private String name;    private Integer age;    // 必须提供getter和setter(Spring通过反射赋值)    public String getName() { return name; }    public void setName(String name) { this.name = name; }    public Integer getAge() { return age; }    public void setAge(Integer age) { this.age = age; }} @RestControllerpublic class RawController {    // 接收JSON并自动绑定到User对象    @PostMapping("/user")    public String handleJson(@RequestBody User user) {        return "用户信息:姓名=" + user.getName() + ",年龄=" + user.getAge();    }         // 直接接收原始XML文本    @PostMapping("/xml")    public String handleXml(@RequestBody String xml) {        return "收到XML内容:" + xml;    }} 4. 接收 Binary适用于单个二进制文件,用 MultipartFile 接收(与 Form Data 的文件接收方式相同)。12345678@RestControllerpublic class BinaryController {    @PostMapping("/upload-file")    public String handleBinary(@RequestParam("file") MultipartFile file) {        return "收到二进制文件:" + file.getOriginalFilename()                + ",类型:" + file.getContentType();    }} 五、总结请求体格式适用场景核心特点Spring Boot 接收方式Form Data文本+文件混合传输支持二进制,分隔符分隔@RequestParam(文本)+ MultipartFile(文件)x-www-form-urlencoded纯文本表单提交URL编码,仅支持文本@RequestParamRaw结构化数据(JSON/XML等)纯文本,需指定格式@RequestBody(绑定对象或字符串)Binary单个二进制文件无键值对,原始字节流MultipartFile掌握这四种格式的差异,尤其是 Form Data 与 x-www-form-urlencoded 的区别,能帮助我们在前后端联调中快速选择合适的传输方式,避免“传文件失败”“参数乱码”等常见问题。
  • [技术干货] 在Postman中高效生成随机环境变量的三种高效方法【转载】
    为什么需要随机环境变量?在API测试中,随机数据解决了几个关键问题:避免重复数据冲突:防止因唯一性约束导致的测试失败模拟真实场景:创建更接近生产环境的测试数据提高测试覆盖率:每次运行使用不同数据,发现更多边界情况减少维护成本:无需手动更新测试数据方法一:使用Postman内置的动态变量Postman提供了一系列开箱即用的动态变量,非常适合快速生成常见数据类型。常用内置动态变量变量名描述示例输出{{$randomInt}}0-1000的随机整数742{{$randomPassword}}随机密码“pD8#kL2!mN”{{$randomPhoneNumber}}随机电话号码“(372) 555-0199”{{$randomUUID}}随机UUID“e6a9a4f0-8b1a-4e5f-9c3d-2b7a0c1d8e9f”{{$randomFullName}}随机姓名“John Smith”{{$randomEmail}}随机邮箱“john.smith@example.com”操作指南在请求的预请求脚本中使用:1234// 设置环境变量pm.environment.set("userEmail", pm.variables.replaceIn("{{$randomEmail}}"));pm.environment.set("userId", pm.variables.replaceIn("{{$randomUUID}}"));pm.environment.set("userPhone", pm.variables.replaceIn("{{$randomPhoneNumber}}"));在请求体或URL参数中直接引用:1234567{  "user": {    "email": "{{userEmail}}",    "id": "{{userId}}",    "contact": "{{userPhone}}"  }}发送请求后,在Test Results标签页查看生成的值方法二:利用pm.variables.replaceIn方法当需要组合多个变量或进行复杂字符串操作时,pm.variables.replaceIn非常强大。高级应用示例12345678// 预请求脚本const domain = "acme-test.com";const randomUsername = pm.variables.replaceIn("user_{{$randomInt}}_{{$randomAlphaNumeric 5}}");const customEmail = `${randomUsername}@${domain}`; pm.environment.set("username", randomUsername);pm.environment.set("customEmail", customEmail);pm.environment.set("apiKey", pm.variables.replaceIn("key-{{$randomUUID}}-{{$timestamp}}"));在请求中使用组合变量1234567{  "auth": {    "user": "{{username}}",    "email": "{{customEmail}}",    "api_key": "{{apiKey}}"  }}方法三:使用JavaScript自定义随机函数当内置变量无法满足需求时,可以使用JavaScript创建高度定制化的随机数据。实用随机函数库1234567891011121314151617181920212223242526272829303132333435// 预请求脚本 - 随机数据生成工具包 // 生成指定范围内的随机整数function getRandomInt(min, max) {  return Math.floor(Math.random() * (max - min + 1)) + min;} // 生成随机字符串function randomString(length = 10) {  const charset = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';  let result = '';  for (let i = 0; i < length; i++) {    result += charset.charAt(Math.floor(Math.random() * charset.length));  }  return result;} // 生成随机日期(过去365天内)function randomPastDate() {  const today = new Date();  const pastDate = new Date(today);  pastDate.setDate(today.getDate() - Math.floor(Math.random() * 365));  return pastDate.toISOString().split('T')[0];} // 生成随机IP地址function randomIP() {  return Array.from({length: 4}, () => Math.floor(Math.random() * 256)).join('.');} // 设置环境变量pm.environment.set("orderId", `ORD-${getRandomInt(1000, 9999)}`);pm.environment.set("authToken", randomString(32));pm.environment.set("lastLogin", randomPastDate());pm.environment.set("clientIP", randomIP());在测试脚本中使用123456// 测试脚本pm.test("Response contains generated data", () => {  const jsonData = pm.response.json();  pm.expect(jsonData.order.id).to.equal(pm.environment.get("orderId"));  pm.expect(jsonData.user.last_login).to.equal(pm.environment.get("lastLogin"));});高级技巧:在测试集合中全局使用创建全局随机函数:在集合的Pre-request Scripts中添加自定义函数,所有请求均可使用环境变量模板:12345678// 在集合预请求脚本中function generateUserData() {  return {    username: `user_${pm.variables.replaceIn("{{$randomInt}}")}`,    password: pm.variables.replaceIn("{{$randomPassword}}"),    email: pm.variables.replaceIn("{{$randomEmail}}")  };}在请求中调用:123// 单个请求的预请求脚本const user = generateUserData();pm.environment.set("currentUser", JSON.stringify(user));最佳实践与常见问题最佳实践:为随机变量添加前缀(如temp_)以便清理在测试结束时自动清理测试数据使用随机种子确保可复现的测试将常用函数保存为Postman全局脚本常见问题解决:12345678// 问题:动态变量不更新// 解决方案:确保在预请求脚本中生成pm.environment.unset("tempValue"); // 先取消设置pm.environment.set("tempValue", newValue); // 问题:需要唯一值// 解决方案:添加时间戳pm.environment.set("uniqueOrder", `ORDER-${Date.now()}-${Math.floor(Math.random()*1000)}`);总结在Postman中生成随机环境变量可以显著提升API测试效率:方法适用场景复杂度内置动态变量快速生成常见数据类型⭐pm.variables.replaceIn组合变量和自定义格式⭐⭐JavaScript自定义函数高度定制化数据需求⭐⭐⭐通过本文介绍的三种方法,你可以:使用{{$random*}}变量快速生成测试数据利用pm.variables.replaceIn创建复杂数据组合通过JavaScript函数实现完全定制化的数据生成高效测试的关键:将随机数据生成与Postman的自动化测试流程结合,创建自包含、可重复执行的测试集合。测试不是复制生产,而是模拟生产的多样性。随机数据正是连接测试环境与生产环境的桥梁。
  • [技术干货] 零基础入门API测试:Postman v11安装与使用全攻略(附下载链接)
    ​一、软件定位与核心功能Postman是全球领先的API开发与测试工具,支持REST、SOAP、GraphQL等协议调试,2025年最新版v11新增AI智能生成测试用例、多环境变量同步等功能。适用于以下场景:前后端分离开发中的接口联调自动化测试脚本编写接口文档自动生成团队协作共享API资源二、安装环境准备1. 系统要求组件最低配置推荐配置操作系统Windows 7Windows 10/11内存4GB8GB磁盘空间500MB1GB SSD2. 网络要求确保443端口开放(用于账户登录和云同步)企业用户需配置代理白名单(若存在网络限制)三、安装全流程详解步骤1:获取安装包访问Postman官网安装包下载页:https://pan.quark.cn/s/407a93c56583/,选择Windows版本步骤2:运行安装程序解压压缩包,打开Postman-win64.exe 文件,选择安装路径(建议修改为D盘):D:\DevTools\Postman_v12 步骤3:完成安装新版默认直接安装启动,不用再启动安装程序勾选Launch Postman选项,点击Finish启动程序四、首次运行配置1. 账户注册/登录点击左下角Sign In,选择注册方式(推荐使用GitHub账号快捷登录)2. 工作区设置选择工作区类型(个人使用建议选Personal)五、功能验证与基础使用测试1:发送GET请求点击**+**号新建请求标签页输入测试接口URL:https://jsonplaceholder.typicode.com/posts/1点击Send按钮查看响应结果测试2:环境变量管理点击右上角齿轮图标进入Environments创建名为"Dev"的环境,添加变量base_url = https://api.example.com在请求URL中使用{{base_url}}/users实现动态配置六、常见问题解答Q1:安装时提示"Unable to authenticate"?检查系统时间是否准确临时关闭杀毒软件防火墙使用命令postman --disable-gpu启动Q2:如何导入Swagger文档?通过Import > Link输入OpenAPI文档URL,自动生成接口集合Q3:请求超时如何调整?在Settings > General中修改Request timeout为30000ms七、延伸学习资源Postman官方学习中心:https://learning.postman.com/声明:本教程使用Postman官方v11版本制作,遵循EULA使用协议。原创内容转载请注明来源。
  • [问题求助] 关于坐席监控接口鉴权authorization在java代码中请求响应401问题
    【问题来源】黑龙江农信社【问题简要】使用 AICC 22.200.0 产品文档 (OP独立部署) 01.chm 中的java 鉴权示例代码无法进行鉴权,response 响应码 401【问题类别】座席监控【AICC解决方案版本】AICC 版本:AICC 8.0.71【问题现象描述】根据文档中 鉴权的示例代码生成了 authorization 串在执行示例代码的 doPost 方法后,返回401 鉴权失败但将 authorization 粘贴到 postman 执行 就可以返回 200 成功示例代码 原封粘贴出来,并未做逻辑变动java版本是 1.8_381
  • [问题求助] 关于坐席监控接口鉴权authorization在java代码中请求响应401问题
    根据文档中 鉴权的示例代码生成了 authorization 串在执行示例代码的 doPost 方法后,返回401 鉴权失败但复制粘贴到 postman 执行 就可以返回 200 成功java版本是 1.8_381这是什么情况呢???
  • [培训资料] 【华为云Stack ManageOne 集成对接】【视频】API对接-云管对接
    videovideo【华为云Stack ManageOne 集成对接】【视频】API对接-云管对接视频内容分段:00:00 整体方案介绍21:20 资源发放案例讲解(以虚机发放为例)北向对接指南导航:cid:link_0视频中的postman示例:请登陆后查看附件
  • [技术干货] API工具--Apifox和Postman对比(区别)
    ## 前言 Postman和Apifox有什么区别?他们之间分别有什么优势,感兴趣的同学可以继续往下看。 不吹不黑,只列功能,纯客观比对。 ## 一.功能列表对比 ### (一)接口设计与文档管理功能 ![](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/15/1655282565040530404.png) 1.导入功能对比 Apifox的导入功能除了支持OpenApi之外,还支持yapi,RAP2,postman等国内用得比较多的接口文档导入,而Postman支持的格式相对较少。 ![](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/15/1655282576741711183.png) ![](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/15/1655282585176936279.png) 2.在线分享功能对比 Postman的在线分享功能,付费版支持“只读”功能,Apifox分享功能支持选择过期日期、设置密码,选择分享内容的范围,选择环境等功能。 ![](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/15/1655282596041219729.png) ![](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/15/1655282605326923851.png) 3.编辑接口文档对比 接口文档既可以纯粹的MD格式文档对接口做整体说明,也可以在单个接口内部对单个接口进行说明注释。Apifox会增加创建时间、负责人、所属业务分组等业务和协同层面的注释信息。 ![](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/15/1655282614774579220.png) ![](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/15/1655282622401738551.png) ![](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/15/1655282631475197465.png) ![](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/15/1655282640297691879.png) 4.生成代码功能对比 Postman支持将接口生成代码,postman支持的接口和框架为4种,Apifox支持130多种语言和框架 ![](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/15/1655282649937591303.4) ![](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/15/1655282657274516776.png) 5.数据模型功能对比 在postman中没有这个功能,在Apifox中,由于本身具备接口设计的功能,因此会将实体类的相关参数封装成一个数据模型,供不同的接口调用,提高数据复用的效率,提高接口封装的程度,减少重复的工作。 ![](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/15/1655282667876270264.png) ### (二)接口调试功能对比 ![](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/15/1655282676280468705.png) 对比了下,Postman基本依赖于JS脚本,通过编写脚本对接口进行调试。 Apifox则是可视化调试界面为主,自定义脚本编辑为辅。 ![](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/15/1655282684951710175.png) ![](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/15/1655282692278583614.png) ![](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/15/1655282700429181459.png) ![](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/15/1655282708291131952.png) 两者对比,在postman中需要写脚本才能实现的接口断言和提取变量、等待时间,在这里都能直接通过填写参数来完成、不需要写脚本。 而操作数据库这个功能postman则不支持。postman只支持js脚本,Apifox目前支持调用其他语言的外部函数和脚本,不过需要先安装相关的Python、java等环境。 ### (三)接口mock功能 ![](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/15/1655282717724329514.png) Postman也有mock功能,但它的mock服务需要自己搭建而且mock功能并不强。 在Postman上执行API mock 需要经过3步: 第一步:创建 mock服务器,获得mock url 第二步:逐个编写并添加 mock 示例,供执行mock时返回对应的接口响应 ![](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/15/1655282725490242234.png) 也就是说接口mock 出来的响应来源于先前调试已经有的,或者直接自己编辑一个响应进去,才能得到一个返回。 mock server 只能返回自己手动添加进去的几条响应,而无法自己无限制创建出mock 数据。 第三步: 将mock url 复制到接口里进行调试。 而想要在 Apifox 内做接口 mock 只需要在`环境`中选择mock服务 在响应参数中选择mock规则,点击发送请求,则mock服务会返回与实际业务返回高度相似的接口响应。 ![](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/15/1655282738275949352.png) ![](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/15/1655282746608606303.png) ![](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/15/1655282754904742773.png) ### (四)接口测试功能 ![](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/15/1655282765832339857.png) 在Postman里写测试脚本,使用动态参数,接口响应断言,参数传递都通过写脚本来实现。 如果要作业务接口测试,需要写各种场景下的用例,同样是通过写脚本来修改参数用例的执行顺序和设置循环次数的。使用postman至少需要掌握基础的js语言。 Apifox里面做自动化测试可视化程度相对较高一些,创建用例的时候可以在接口设计面板修改参数然后保存,场景用例可以添加不同的参数用例作为步骤,通过拖曳来选择用例的执行顺序。 右侧的面板可以填写循环次数,接口间的参数传递和断言也可以在可视化面板提取出来。完成单个接口测试或者场景测试,都不需要写代码。 ![](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/15/1655282780666517472.png) ## 二.团队协作功能 ![](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/15/1655282790439655374.png) Postman的团队协作功能是付费的,3人以下团队可使用免费版协作,3人以上根据可用功能和人数有不同的价格版本。 但通常一个团队不可能只有3个人,也就是说,有限开放的那点协同功能是无法支持正常的团队协作需求的。 ![](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/15/1655282798642373509.png) Apifox的协同功能是免费的,团队成员的权限管理,接口数据同步、在线分享都没有障碍。 本身Apifox的定位和Postman就不一样,它一出生就是定位在API管理和协作上。 所以除了协作功能必须的权限管理和数据同步上,它也最大程度地做数据复用,尽量减少不必要的工作量。 比如说接口调试的参数用例可以直接导入来做自动化测试,一个数据模型可以给多个接口使用,一套接口数据可以给后端做调试、前端做mock、测试做自动化。 ![](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/15/1655282806721395621.png) ## 三.Apifox 没有的功能 Postman支持fork GitHub上的代码,以及API 网关。这两块在Apifox上均没有相关的功能。 两个工具的功能有相同的地方,但本质上各自的市场定位还是不同的,Postman打通了接口调试、测试、到线上监测,代码生成。 而Apifox始终立身于前端、后端测试间基于接口的设计、调试、测试、文档管理等一系列接口的生命周期管理来发力。 在相同的功能点上,Apifox基于本土互联网团队的协作模式和痛点,基本做到了人无我有,人有我优 的程度。 因此如果基于各种原因,寻找Postman替代的开发们,不妨体验一下Apifox。 ## 四.产品价格 从收费模式上看,postman是基础功能不收费,协作功能收费;Apifox是公网版本不收费,私有化部署收费。 Apifox的SaaS版本也没有什么功能和团队人数的限制,对于我们常规的项目开发来说,免费版本就够用了。 公网的SaaS版本,数据的确是放在他们服务器上的,但这点Postman其实也一样,而且postman的服务器可是放在国外的。 如果大家的项目安全保密级别较高,想要做私有化部署,可以去他们官网咨询,这方面我没咨询过就不对比了。 ![](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/15/1655282816062828538.png) ### 下载地址 **Apifox官网**:[www.apifox.cn](https://www.apifox.cn/?utm_source=liam)