找回密码
 立即注册

QQ登录

只需一步,快速开始

James.Lv 讲师达人认证 悬赏达人认证 活字格认证 Wyn认证

超级版主

223

主题

2652

帖子

5899

积分

超级版主

Rank: 8Rank: 8

积分
5899

活字格认证活字格高级认证Wyn高级认证Wyn认证微信认证勋章讲师达人元老葡萄悬赏达人

James.Lv 讲师达人认证 悬赏达人认证 活字格认证 Wyn认证
超级版主   /  发表于:2021-9-29 11:39  /   查看:3783  /  回复:9
本帖最后由 James.Lv 于 2021-9-29 11:42 编辑

在报表设计中,除了使用数据库的数据展示之外,有时我们也需要去请求一些API接口的JSON数据。默认我们支持的是GET请求,有些接口呢我们也需要使用POST请求,本贴就来介绍如何使用JSONAPI数据源。
具体实现方法:
一、GET请求方式
GET请求方式比较简单,具体可以参考文档:
https://help.grapecity.com.cn/pa ... tion?pageId=5968536

二、POST请求方式
1.桌面端设计器
1.1创建报表,添加数据源,使用json数据源,使用链接字符串。

1.2 链接字符串内容解析
  1. method:代表请求方式
  2. headers:代表请求头信息
  3. body:代表POST请求报文体
  4. jsondoc:代表请求的URL
  5. schemadata:代表JSON数据的schema信息(可选)
复制代码
示例链接字符串
  1. method=POST;headers={"Content-Type": "application/json"};body={"dataSetDoc":{"name":"楼盘数据","query":{"dataSources":[{"id":"0e08eb20-b984-4ca0-ab28-6d85b515d6ec","name":"项目运营","fileName":null,"provider":null,"useAdvancedConfig":false,"connectionString":null,"mappingConfigs":null,"useUserContext":false,"useMultiTenant":false,"isExtracted":false}],"parameters":[],"commandText":"SELECT [楼号],[数值] FROM [楼盘数据] ","commandType":"Sql","commandModel":{"firstTable":{"id":"715464","tableType":"NativeTable","tableName":"楼盘数据(0e08eb20-b984-4ca0-ab28-6d85b515d6ec)","sql":null,"dataSourceId":"0e08eb20-b984-4ca0-ab28-6d85b515d6ec","unionType":"none","unionMap":null,"filters":[],"sQlExpressions":[],"tables":[]},"joinRelations":[]}},"fields":[{"table":"楼盘数据(0e08eb20-b984-4ca0-ab28-6d85b515d6ec)","column":"楼号","alias":"","description":"","dataType":"String","format":"","fieldType":"Normal","aggregation":null,"rawType":null,"msDescription":""},{"table":"楼盘数据(0e08eb20-b984-4ca0-ab28-6d85b515d6ec)","column":"数值","alias":"","description":"","dataType":"Number","format":"f2","fieldType":"Normal","aggregation":null,"rawType":null,"msDescription":""}],"groupFields":[],"customSqlTables":[],"filterExpressions":null,"filterConditions":{"conditionType":0,"conditionItems":[],"type":null,"table":null,"column":null,"expression":null,"operator":null,"value":null,"valueType":null,"targetType":null},"indexed":true,"tagIds":null,"comment":null,"incrementalUpdateSetting":null},"parameters":[],"uriParams":[]};jsondoc=http://localhost:51980/api/datasetmanagement/preview?ignoreusercontext=false&rowcount=100&token=959bcde9cde7eb36aa691e34c2f453b4af21d4541cb7fb98514c4583f38a2984
复制代码
1.3 然后就可以基于这个数据源进行数据集和报表设计


2.web端设计器
2.1 创建报表,添加数据源,使用json数据源,使用链接字符串。

链接字符串格式跟桌面端一致。之后的设计也跟桌面端设计方式一致




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

9 个回复

倒序浏览
杭州昱恒科技
初级会员   /  发表于:2022-4-20 14:13:01
沙发
header和body能当作参数动态传参吗
回复 使用道具 举报
James.Lv讲师达人认证 悬赏达人认证 活字格认证 Wyn认证
超级版主   /  发表于:2022-4-20 14:49:06
板凳
杭州昱恒科技 发表于 2022-4-20 14:13
header和body能当作参数动态传参吗

可以的,都可以使用参数进行传递
回复 使用道具 举报
杭州昱恒科技
初级会员   /  发表于:2022-4-20 14:55:12
地板
method=POST;headers={"Content-Type":"application/json"};body={"GroupCode": Parameters!GroupCode.Value,"StartDate": Parameters!StartDate.Value,"EndDate": Parameters!EndDate.Value};jsondoc=http://localhost:59503/api/Rpt/TestReport


我这么写不行
回复 使用道具 举报
杭州昱恒科技
初级会员   /  发表于:2022-4-20 15:52:57
5#
James.Lv 发表于 2022-4-20 14:49
可以的,都可以使用参数进行传递

method=POST;headers={"Content-Type":"application/json"};body={"GroupCode": Parameters!GroupCode.Value,"StartDate": Parameters!StartDate.Value,"EndDate": Parameters!EndDate.Value};jsondoc=http://localhost:59503/api/Rpt/TestReport

我这么写不行,传不了参数,能麻烦看下吗,比较急
回复 使用道具 举报
James.Lv讲师达人认证 悬赏达人认证 活字格认证 Wyn认证
超级版主   /  发表于:2022-4-20 17:32:53
6#
杭州昱恒科技 发表于 2022-4-20 15:52
method=POST;headers={"Content-Type":"application/json"};body={"GroupCode": Parameters!GroupCode.Va ...

您好,可以配置参数的,您可以这样设置,当你设置参数的时候,参数使用 {@参数} ,其余的左括号要再加一个左括号进行转义,类似这样, {{



jsondoc=http://localhost:51980/api/graphql?token=371d024ed056c613db3672679668998f851af2df96cf6b3c7ca7d2971588f844;method=POST;headers={{"Content-Type": "application/json"};body={{"query":"query {{documents(types: \"{@types}\") {{ id, type,title}}"};

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
杭州昱恒科技
初级会员   /  发表于:2022-4-21 14:29:40
7#
本帖最后由 杭州昱恒科技 于 2022-4-21 14:30 编辑
James.Lv 发表于 2022-4-20 17:32
您好,可以配置参数的,您可以这样设置,当你设置参数的时候,参数使用 {@参数} ,其余的左括号要再加一 ...

我的报表设计器不是JS版的

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
James.Lv讲师达人认证 悬赏达人认证 活字格认证 Wyn认证
超级版主   /  发表于:2022-4-21 23:16:29
8#
杭州昱恒科技 发表于 2022-4-21 14:29
我的报表设计器不是JS版的

桌面端设计器这样来写,具体可以参考附件报表

="jsondoc=http://localhost:51980/api/graphql?token=371d024ed056c613db3672679668998f851af2df96cf6b3c7ca7d2971588f844;method=POST;headers={""Content-Type"": ""application/json""};body={""query"":""query {documents(types: \""" & Parameters!types.Value & "\"") { id, type,title}}""};"



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
杭州昱恒科技
初级会员   /  发表于:2022-4-22 09:18:27
9#
本帖最后由 杭州昱恒科技 于 2022-4-22 09:22 编辑
James.Lv 发表于 2022-4-21 23:16
桌面端设计器这样来写,具体可以参考附件报表

="jsondoc=http://localhost:51980/api/graphql?token=3 ...

这样调控制器不行吗,像mvc的ajax调控制器那种

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
James.Lv讲师达人认证 悬赏达人认证 活字格认证 Wyn认证
超级版主   /  发表于:2022-4-22 16:05:46
10#
杭州昱恒科技 发表于 2022-4-22 09:18
这样调控制器不行吗,像mvc的ajax调控制器那种

您好,这个没办法URL必须是完整地址
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部