API数据源

BaskServer支持基于Restful接口定义API数据源,这样我们在一个项目里可以很容易的去访问第三方应用的数据服务,并引入到BaskServer中,并为BaskReport,BaskAdapt等模块提供数据服务。

菜单入口:

菜单入口

下面我们用jsonplaceholder提供的Restful服务搭建API数据源:

项目地址 https://jsonplaceholder.typicode.com/

选择API数据源:

配置界面

设置如下: 配置界面

单击确定保存。

数据源列表就能看到上面添加的API数据源对象: 列表界面

配置API数据集

单击上面配置好的API数据源,进入数据集配置界面: 菜单界面

单击新增API数据集: 菜单界面 请求类型为GET, 地址为: https://jsonplaceholder.typicode.com/posts, 并单击初始化字段,完成字段的初始化工作。最后保存。 用相同的办法再配置如下的数据集:

最后添加好的数据集列表如下: 数据集列表

使用API数据集

在报表设计器中,我们可以添加服务器数据源: 添加API数据源

然后在数据集标签页上选择对应的数据集: 添加API数据源

这样就可以开始进行报表的设计和开发了。

预览返回的JSON数据

我们可以通过测试按钮查看返回的JSON数据 查看响应结果

如何指定JSON对象

有时候API返回的数据是一个复杂结构的JSON对象,而我们的数据集只需要获取其中的一个节点对象,那么我们可以通过指定对象按钮确认: 指定JSONPath按钮

该按钮会弹出一个JSON对象选择对话框: 指定JSONPath

选择你希望解析的JSON对象就可以。

关于鉴权

在很多情况下API数据请求都会存在用户鉴权的问题,API数据集也允许你进行鉴权设置: 鉴权标签页

目前提供有四种鉴权模式:

  • No Auth
  • HTTP Auth
  • Bearer Token
  • OAuth 2.0

其中No Auth就表示不需要鉴权,直接访问。

HTTP Auth:是指在请求访问的时候,希望将客户端的参数或header中的信息转发到API数据请求对应的参数或Header中。

如下图: 鉴权标签页

举例说明:

例子1: 如果你希望从前端的url请求中获取参数,并转发到Restful请求中,例如url为: http://localhost:8080/baskserver/baskreport/designer?tenantId=basksoft&file=24501&username=anlin, 我们希望将username参数取出并放到Restful请求的URL中,同时参数名希望修改为userid,那么就可以这么配置: 鉴权配置

例子2: 如果你希望从前端的url请求中获取参数,并转发到Restful请求中,例如url为: http://localhost:8080/baskserver/baskreport/designer?tenantId=basksoft&file=24501&accessToken=MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3, 我们希望将accessToken参数取出并放到Restful请求的Header中,那么就可以这么配置: 鉴权配置

Bearer Token: 就是HTTP Auth的一个简化配置版本,它会试图从cookie,以及数据集的参数中读取accessToken的值,并直接写入到header中,对应header中的key为Authorization。 读取顺序: cookie中读取accessToken的值 dataset的参数中读取accessToken的值 其中dataset的accessToken会覆盖cookie的值

读取cookie中的accessToken的值的key值可以自定义,可以通过accessToken的key值来定义,默认值为access_token,dataset中accessToken对应的key值同此规则

OAuth 2.0:对于一些有后台定时任务的数据请求,如果该Restful请求不是前端发起的,此时是无法从前端的url或header中读取权限信息的,那么可以利用OAuth的客户端授权模式,我们只要配置好获取accessToken的url,以及对应的client的id和密码,系统就会利用该配置自动获取accessToken的值,并将该值在Restful请求的时候放在header中,从而避免权限验证无法通过的问题。 鉴权配置

关于鉴权继承问题

如果一个API数据源下的API数据集的鉴权配置都一样,则我们可以将鉴权配置放在API数据源中,并在API数据集的鉴权配置中选择“继承数据源权限设置”,这样可以大大加快API数据集定义的时间,提升开发效率。

关于API数据集的参数

API数据集可以设定请求参数,具体参数的值由使用数据集的发起方决定,例如如果是BaskReport添加了API数据集,则报表的系统参数会覆盖API数据集的参数值,系统执行的时候如果发现有同名参数,就将报表的参数值覆盖到API数据集的参数中。

关于API数据源的类型

在某一些场景,Restful请求返回的数据是一个数据包,里面包含了当前报表开发需要的多个数据集,如下的JSON结构: JSON结构

如果按照上面的方法,我们需要定义多个API数据集,并配置相关的URL以及请求参数。这种情况下其实他们的URL以及请求参数和鉴权都完全一致。 那么我们只需要将API数据源的类型修改为“数据集集合”就可以。 数据集类型

这种类型的数据源允许我们和API数据集一样,配置URL以及参数等配置,并提供初始化数据集的按钮,自动初始化内部的数据集。

results matching ""

    No results matching ""