内部工具的需求无非是查询、操作两类,这两类可以覆盖80%以上的需求。查询可以对应表格(table),操作则对应表单(form)。Table和Form在任何一个开源UI库中都存在对应的组件,使用时只需要将其抽象成配置即可。因此,通过配置化实现前端工具页0开发成本,后端接口请求就更不用说了。
1、前端配置化(element-ui为例)
table、form工具页分别实现一个通用页面,多个工具路由指向这两个页面(侧边菜单路由也可以实现配置化),在进入工具页初始化加载时获取该页面的配置,或者进入平台时拉取所有前端页面的配置。
table基础配置示例
{
// 列配置,同ui组件中的属性
"columns": [
{
"prop": "xxx",
"label": "xxx",
"width": "nnn",
"fixed": false
}
...
],
// 操作配置
"actions": [
{
"action": "xxx",
"label": "xxx"
}
],
// 搜索查询配置(同form)
"search": [
{
"type": "input",
"label": "xxx",
"model": "xxx"
}
]
}
form基础配置示例
{
// 表单内容
"items": [
{
// 输入框类型
"type": "input",
// 左侧展示标签
"label": "xxx",
// 值绑定字段
"model": "xxx"
},
{
"type": "select",
"label": "xxx",
"model": "xxx",
"options": [
{"label": "xxx", "value": "xxx"},
{"label": "xxx", "value": "xxx"}
]
}
]
}
2、后端请求配置化
接口请求无非url、method、query、body/content-type,将这些内容配置化即可,举例:
{
"url": "http://127.0.0.1:9000/test?a={a}",
"method": "post",
"content_type": "json",
// 成功判定
"assert": {
"status_code": 200
},
// jsonpath方式获取需要的数据
"result_key": "data.list"
}
前端以固定前缀的请求url、body将请求内容发送给工具服务后端,后端服务根据url得知是哪个工具,获取到工具的请求配置后,进行请求内容封装,最终请求到真实的下游。