内部工具平台是如何实现工具的高效落地的?

99 阅读1分钟

内部工具的需求无非是查询、操作两类,这两类可以覆盖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得知是哪个工具,获取到工具的请求配置后,进行请求内容封装,最终请求到真实的下游。

3、交互流程

flow.png