欢迎光临
我们一直在努力

body是什么厂数据工厂数据集

插件内置了两种装载方式,分别为

  • Http:通过配置相关请求,实现从 Web 端装载数据。( 比如 JSON 服务等 )

  • 单参数:可以实现将装载器界面的数据参数,经过计算后原样传给解析器,主要是供调试使用。( 比如 JSON、XML 等结构化数据 )  

3.1.1 Http

当选择Http装载方式时,装载器的内容是一个JSON,里面有4个字段,分别是

url 请求地址  type 请求类型 枚举值:GET,POST,JSON charset 编码 disableProxy 禁用系统代理 仅在type为POST、JSON模式下生效,缺省值为false。为true时将禁用系统代理 header 请求头,以json键值对形式写入 body 当请求类型为JSON时使用 connectTimeout 请求连接超时时间,毫秒 默认5秒,可通过配置该属性调整连接超时 readTimeout 等待响应超时时间,毫秒 默认60秒,可通过配置该属性调整响应超时时间

具体使用示例如表所示:

GET

     }
}

参数    值
bb     p_BB
cc      p_CC

url: http://example.com/?cc=p_CC  

type: get

header:{aa:p_BB}

用户在参数面板中添加的第二类额外参数会作为query参数拼接到url后。

POST

    }
}

参数    值
bb     p_BB
cc      p_CC

url: http://example.com/ 

type: post

header: {aa:p_BB}

body:
{
    cc: p_CC
}

用户在参数面板中添加的第二类额外参数在请求体body里。body为x-www-form-urlencoded模式,内容为cc=p_CC。

JSON


    }
}

参数    值

bb     p_BB

cc      p_CC

url: http://example.com/ 

type: post 

header: {aa:p_BB,

              content-type: json} 

body:
{
    cc: p_CC
}

JSON 实际上是post raw模式,第二类参数会被装载成JSON的格式作为请求体发送。对于POST请求这种方式使用的更普遍。

body有两种装载方式:一种是类似用post的。第二种是直接写body键。


    },
 body:{
    cc:${dd}
    }
}

参数    值

bb    p_BB

dd    p_DD

url: http://example.com/ 

type: post

header: {aa:p_BB,

              content-type: json}
body:
{
    cc:p_DD
}

注:示例中的http://example.com/仅为演示,实际请按照真实接口进行调整。

当请求类型为GET时,提供Content-Type参数及body配合使用

Content-Type 可选参数,搭配body参数使用。枚举值:application/x-www-form-urlencoded、application/json、multipart/form-data。如果存在body但是没有传递Content-Type参数,则Content-Type默认使用x-www-form-urlencoded ,
    "body": {
        "age": "123"
    }
} body 通过键值对形式配置,配置自动转换为相应content-type的报文格式,比如x-www-form-urlencoded下报文会被转换成age=123;参数面板的参数只会作为query传递

3.1.2 单参数

示例

在装载方式下拉框中选择“单参数”装载方式,在装载器内容框中输入 ${data}${today()} ,在解析方式下拉框中选择“原始数据”解析方式(表示原样返回数据,将在下文3.2.3进行介绍),在参数面板配置参数如下:

参数      值
data     myData

点击预览按钮,得到如下结果:

插件内置了三种解析方式,分别为:

  • Json:对结构化的 Json数据进行解析,生成 FineReport 支持的数据模型。

  • Js解析器:通过Js脚本解析数据,生成 FineReport 支持的数据模型。

  • 原始数据:原样返回数据,主要是供调试使用。 

3.2.1 Json

提供了不完整的JPATH语法。字段含义如下:

  • dataPath:取值默认为root,表示处理全部数据;取值root.key1.key2.arr[1] 表示定位到{ key1 : { key2 : { arr:[ {},{<这里>} ] }} },这种情况下只解析定位路径下的json内容。

  • showmap:提供列名映射,将原始的列名(path1)转换为自定义的列名(value1)。

3.2.2 Js解析器

参照JSON数据集插件中Js语法,$data变量为接受到的原始数据,最终需要通过Js生成如下一个数据表对象

返回的对象样例,column为列名,content为二维数组,保存数据集单元格的值

{
    "column":["col1", "col2", "col3"],
    "content":[
        [1, 2, 3],
        [4, 5, 6]
    ]
}

示例:具体代码请按照实际场景开发

装载器返回数据如下:

{
    "monthFactoryWaitingRateDataList": [
        {
            "factory": "HZC01",
            "dayFactoryWaitingRateList": [0,0,0],
            "days": ["2023-04-01","2023-04-02","2023-04-03"],
            "dayStrs": ["04-01","04-02","04-03"]
        },
        {
            "factory": "HZC02",
            "dayFactoryWaitingRateList": [0,0,0],
            "days": ["2023-04-01","2023-04-02","2023-04-03"],
            "dayStrs": ["04-01","04-02","04-03"]
        }
    ]
}

JS解析器填写示例:

var x =$data;

var column = Object.keys(x.monthFactoryWaitingRateDataList[0]);
var content = [];

for (var i = 0; i < x.monthFactoryWaitingRateDataList.length; i++) {
    for (var j = 0; j < x.monthFactoryWaitingRateDataList[i].dayFactoryWaitingRateList.length; j++) {
        var contentLine = [];
        contentLine.push(x.monthFactoryWaitingRateDataList[i].factory, x.monthFactoryWaitingRateDataList[i].dayFactoryWaitingRateList[j], x.monthFactoryWaitingRateDataList[i].days[j], x.monthFactoryWaitingRateDataList[i].dayStrs[j]);
        content.push(contentLine);
    }
}

var result = {};
result.column = column;
result.content = content;
return result;

预览数据,效果如下:

Js解析器性能比较低,数据量大的时候要慎用。

3.2.3 原始数据

类比单参数装载器,返回一个只有一个单元格的数据集,数据集的内容是从装载器接受到的原始数据,参数面板无意义。具体示例参照3.1.2。

3.3.1 案例一

获取帆软市场的插件列表

装载方式:Http

选择Http装载方式以实现从 Web 端装载数据。


}

注:1. 具体的装载器逻辑可以单独客制,并没有什么统一的写法规范

2. 接口实际返回Json格式的数据如下(此处做对比说明,实际插件使用过程中,不会出现该步骤)

解析方式 :Json

选择Json解析方式以对结构化的 Json数据进行解析

{
    dataPath:"root.result",
    showmap:"path1,value1,path2,value2",
}

即主面板配置如下:

点击预览按钮,返回经格式转换后的数据结果如下:


3.3.2 案例二

假设有如下接口用来获取某城市天气 http://example.com?city=北京

如果我们希望根据模板控件内容动态获取城市的数据,可以在模板中设置一个控件 city

然后在数据工厂面板中进行如下配置:

装载方式:Http

方式一:在装载器中添加同名参数 参数默认值置空


{
    url:"http://example.com?city=${city}",
    type:"GET",
    charset:"UTF-8",
    header:{}
}

方式二:在参数面板中手动添加参数city,参数值置空


}

假设接口返回值如下:

{
    result:[
        {
            district:海淀区,
            temperature:20,
        },
        {
            district:朝阳区,
            temperature:23,
        }
    ]
}

解析方式:Json

{
    dataPath:"root.result",
    showmap:"district,辖区,temperature,温度"
}

即主面板配置如下:

点击预览按钮,返回经格式转换后的数据结果如下:

赞(0)
未经允许不得转载:上海聚慕医疗器械有限公司 » body是什么厂数据工厂数据集

登录

找回密码

注册