API数据源
BaskServer支持基于Restful接口定义API数据源,这样我们在一个项目里可以很容易的去访问第三方应用的数据服务,并引入到BaskServer中,并为BaskReport,BaskAdapt等模块提供数据服务。
菜单入口:
下面我们用jsonplaceholder提供的Restful服务搭建API数据源:
选择API数据源:
单击确定保存。
配置API数据集
单击新增API数据集: 请求类型为GET, 地址为: https://jsonplaceholder.typicode.com/posts, 并单击初始化字段,完成字段的初始化工作。最后保存。 用相同的办法再配置如下的数据集:
- posts URL https://jsonplaceholder.typicode.com/posts
- comments URL https://jsonplaceholder.typicode.com/comments
- albums URL https://jsonplaceholder.typicode.com/albums
- photos URL https://jsonplaceholder.typicode.com/photos
- todos URL https://jsonplaceholder.typicode.com/todos
- users URL https://jsonplaceholder.typicode.com/users
使用API数据集
这样就可以开始进行报表的设计和开发了。
预览返回的JSON数据
如何指定JSON对象
有时候API返回的数据是一个复杂结构的JSON对象,而我们的数据集只需要获取其中的一个节点对象,那么我们可以通过指定对象按钮确认:
选择你希望解析的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结构:
如果按照上面的方法,我们需要定义多个API数据集,并配置相关的URL以及请求参数。这种情况下其实他们的URL以及请求参数和鉴权都完全一致。 那么我们只需要将API数据源的类型修改为“数据集集合”就可以。
这种类型的数据源允许我们和API数据集一样,配置URL以及参数等配置,并提供初始化数据集的按钮,自动初始化内部的数据集。