1.6 Rest数据源

1.6.1 新建Rest数据源

在UniEAP Report产品中要使用Rest数据源,需新建Rest数据源,位置如下:

3

rest数据源是通过一个http的网络接口来获取数据,需要准备的信息如下图:

1

1.6.2 请求地址

rest数据源支持GET和POST两种请求,要根据填入的接口地址来确认具体的请求方法。

1.6.3 请求参数

对于GET请求,用户可携带Params和Headers类型的参数;对于POST请求,用户可携带Params、Headers和Body类型的参数。 Params和Headers参数可以选择参数的值的类型:固定值,动态参数和系统变量,其中动态参数就是我们在报表中定义的报表参数,

4

Body参数目前只支持json格式。我们也可以在json中通过固定的写法来引用报表参数和系统变量。报表参数可以通过 $参数标识 来引用; 系统变量同样通过 $参数标识 来引用,如下图:

2

1.6.4 数据解析

数据解析决定的我们如何解析接口返回的数据,通过指定解析路径的方式可以解析Json格式并带有列表/数组的接口返回结果: 解析路径默认值是一个正斜线“/”,这种情况下表示接口返回的json格式是一个数组,格式如下:

[{
    "orderId": "2016010313265448",
    "orderDate": "2016-01-03",
    "category": "食品",
    "goods": "面包",
    "count": 2,
    "cost": 2.8,
    "payment": 8.8,
    "buyer": "徐先生",
    "province": "江西省",
    "city": "南昌市"
}, {
    "orderId": "2016011352714789",
    "orderDate": "2016-01-13",
    "category": "服装",
    "goods": "男士T恤",
    "count": 1,
    "cost": 41.0,
    "payment": 180.0,
    "buyer": "胡先生",
    "province": "辽宁省",
    "city": "大连市"
}]

如果请求返回的数据格式为:

{
    "responseCode": "200",
    "responseMsg": "success",
     "responseValue": [{
        "orderId": "2016010313265448",
        "orderDate": "2016-01-03",
        "category": "食品",
        "goods": "面包",
        "count": 2,
        "cost": 2.8,
        "payment": 8.8,
        "buyer": "徐先生",
        "province": "江西省",
        "city": "南昌市",
        }, {
        "orderId": "2016011352714789",
        "orderDate": "2016-01-13",
        "category": "服装",
        "goods": "男士T恤",
        "count": 1,
        "cost": 41.0,
        "payment": 180.0,
        "buyer": "胡先生",
        "province": "辽宁省",
        "city": "大连市"
    }]
}

那么解析路径的值应该是“/responseValue”

通过指定解析路径的方式可以解析Json格式并带有列表/数组的接口返回结果,如果接口返回的结果不是json格式或者需要一定逻辑处理那么可以选择二次开发,通过自定义解析类解析数据。

1.6.4.1 数据解析方法扩展

我们提供了一个数据解析接口,需要依据此接口进行扩展:

package com.neusoft.report.dataset.executer.rest;

import java.util.List;
import java.util.Map;

public interface ParseDataHandler {
    /**
     * 解析接口返回数据
     * 
     * @param result
     * @return
     */
    public List<Map<String, Object>> getDataList(String result);
}

接口只有一个getDataList方法,此接口的入参为rest接口的返回值,即:Json格式的数据,getDataList返回值为一个单纯的列表数据。

实现接口时可搭建report的二次开发工程,在实现好对应接口后,将实现类编译成class文件,按照实现类的全限定名将class文件放到report部署包中,在进行Rest数据源维护时,勾选“另指定数据解析类”,并填写类的全限定名,这个Rest数据源在解析数据时就会使用指定的类进行解析,而不是用默认的解析方法了。如下图:

5

1.6.4.2 js解析函数

除了以上两种数据解析方式外,还支持js函数解析,点击“解析函数”会打开,js函数解析代码编辑页面,如下图

6

parseFunction函数的入参data,即为rest接口返回的原始数据,在parseFunction函数体内,需要使用javascript原生的方法,将接口返回的原始数据转化为report能识别的二维数据数据(例如函数体内定义的table对象)。

7

编辑完parseFunction函数体以后,可点击测试执行,验证函数体书写的正确性,如果rest数据源中使用了报表参数,在点击测试执行时,会打开报表参数赋值页面, 为报表参数赋值好后,点击确定,验证函数体书写正确性。

1.6.5 用户认证

  目前认证的方式只支持OAuth 2.0的客户端模式(Client Credentials)。

results matching ""

    No results matching ""

    results matching ""

      No results matching ""