Apifox 实体类转请求参数数据模型
Posted 笑虾
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Apifox 实体类转请求参数数据模型相关的知识,希望对你有一定的参考价值。
Apifox 数据模型
form-data 请求参数
1. 批量编辑参数
我们在JavaBean中
已经写好了注释
,怎么快速的导进 Apifox 。
批量编辑支持的格式
接口管理》接口》请求参考》Body》form-data》批量编辑
。
支持逗号模式
、冒号模式
。自己对比 一下就知道区别了。以下是逗号模式
格式:参数名,类型,必填,示例值,说明
参数名 | 类型 | 必填 | 示例值 | 说明 |
---|---|---|---|---|
字段名1 | string | true | 666 | 巴拉巴拉 |
字段名2 | string | true | 777 | 巴拉巴拉 |
接下来要做的就是把Java中的实体类,转成这种格式了。
1.1 手动处理
复制实体类代码到Notepad++
先清理一下注释,然后放到Excel
中调整下列序。就可以直接复制到Apifox
的批量编辑了。
-
删除所有 // ========================== xxxxx ==========================
查找:^\\s+//.*[\\n\\r]+
替换:空
-
删除【 /**】
查找:^\\s+/\\*\\*[\\n\\r]\\s+\\*\\s
替换:空
-
删除【 * 】
查找:[\\n\\r]\\s+\\*\\s
替换:|
-
删除【 */】
查找:[\\n\\r]\\s+\\*/[\\n\\r]\\s+
替换:,
1.2. 辅助脚本
先将实体类导出 JavaDoc 再用以下 js 提取参数
var fields = [...document.querySelectorAll(`a[name="field.detail"]~ul>li`)];
// 数据模型 JSON Schema 模板
var template = [];
function getType(str)
return str.substring(str.lastIndexOf('.') + 1, str.lastIndexOf(' '))
var JsonSchema = fields.map( field =>
// 格式:参数名,类型,必填,示例值,说明
var 参数名 = field.querySelector('h4').innerText;
var 类型 = getType(field.querySelector('pre').innerText);
var 说明 = field.querySelector('div')?.innerText;
return `$参数名,$类型,true,,$说明`;
).join('\\n');
console.log(JsonSchema);
copy(JsonSchema);
数据模型
创建了数据模型可以重复使用。
数据模型
如果想方便复用,可以创建数据模型。
JSON Schema 格式
数据模板格式如下,因为Apifox
暂时还不支持 JSON5
所以免费送个正则用来删除注释/\\*\\s.*\\s\\*/
/* 数据模型 JSON Schema */
"type": "object", /* 根节点 */
"properties":
"username": /* 字段名 */
"title": "用户名", /* 字段名-中文名 */
"type": "string" /* 字段名-字段类型 */
,
"pwd":
"title": "密码", "type": "string"
,
"code":
"title": "业务编码",
"type": [ "string", "null" ], /* string类型,并且可为空 */
"minLength": 1, /* 字段-更多:最小长度 */
"maxLength": 10, /* 字段-更多:最大长度 */
"format": "date", /* 字段-更多:格式化日期 */
"default": "66666666", /* 字段-更多:默认值 */
"pattern": "\\\\d+", /* 字段-更多:正则校验 */
"description": "这是字段的说明部分", /* 字段-说明*/
"mock": "mock": "@regexp(/\\\\w3,5\\\\d+/)"
,
"dict": /* 字段名 */
"title": "字典",
"type": [ "array", "null" ], /* 这个字典是array类型,有子元素 items */
"items": /* 就是一个嵌套的 Object */
"type": "object",
"properties":
"value": "title": "值", "type": "string" ,
"label": "title": "名称", "type": "string"
,
"x-apifox-orders": [ "label", "value" ],
"required": [ "label", "value" ]
,
"required": [ "username", "pwd", "dict" ],
"x-apifox-orders": [ "code", "username", "pwd", "dict" ]
JavaDoc 转【数据模型】
var fields = [...document.querySelectorAll(`a[name="field.detail"]~ul>li`)];
// 数据模型 JSON Schema 模板
var template =
"type": "object",
"properties": ,
"required": [],
"x-apifox-orders": []
function getType(str)
return str.substring(str.lastIndexOf('.') + 1, str.lastIndexOf(' '))
var JsonSchema = fields.reduce(( t, field ) =>
var type = field.querySelector('pre').innerText;
var txtArr = field.querySelector('div')?.innerText.split(' ');
// 取得字段名
t.properties[field.querySelector('h4').innerText] =
// 取得字段类型
"type" : getType(field.querySelector('pre')?.innerText),
// 取得中文名(注释第一行)
"title": txtArr.shift(),
// 取得说明(注释其余行)
"description" : txtArr.join('\\n')
// 必填项(默认全都必填)
t.required.push(fieldName);
//【数据模型】中字段显示顺序
t[`x-apifox-orders`].push(fieldName);
return t;
, template);
console.log(JsonSchema);
copy(JsonSchema);
"type": "object",
"properties":
"author": "title": "作者", "type": "String",
"content": "title": "诗词内容", "type": "String",
"createTime": "title": "创建时间", "type": "Date",
"id": "title": "主键", "type": "Long",
"serialVersionUID": "type": "private static long",
"title": "title": "诗词标题", "type": "String",
"updateTime": "title": "更新时间", "type": "Date"
,
"required": ["author", "content", "createTime", "id", "serialVersionUID", "title", "updateTime"],
"x-apifox-orders": ["author", "content", "createTime", "id", "serialVersionUID", "title", "updateTime"]
参考资料
Idea 实体类生成 JavaDoc
Tools >> Generate JavaDoc
- 根据需要选择自己要生成的部分。可以加选几个文件,也可以选择范围。
- 输出的位置 。
- 实体中的字段都是私有的,所以这里调整到
private
- 为了方便从页面提取字段信息,我把用不到的都取消了。
- 设置言语 Locale:
zh_CN
- 命令行参数(设置字符集)Other command line arguuments:
-encoding UTF-8 -charset UTF-8
以上是关于Apifox 实体类转请求参数数据模型的主要内容,如果未能解决你的问题,请参考以下文章