James.Lv 发表于 2021-9-29 11:39:40

如何使用JSONAPI数据源发送POST请求以及传递Header

本帖最后由 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 链接字符串内容解析method:代表请求方式
headers:代表请求头信息
body:代表POST请求报文体
jsondoc:代表请求的URL
schemadata:代表JSON数据的schema信息(可选)示例链接字符串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=959bcde9cde7eb36aa691e34c2f453b4af21d4541cb7fb98514c4583f38a29841.3 然后就可以基于这个数据源进行数据集和报表设计


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

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




杭州昱恒科技 发表于 2022-4-20 14:13:01

header和body能当作参数动态传参吗

James.Lv 发表于 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

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 发表于 2022-4-20 17:32:53

杭州昱恒科技 发表于 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}}"};

杭州昱恒科技 发表于 2022-4-21 14:29:40

本帖最后由 杭州昱恒科技 于 2022-4-21 14:30 编辑

James.Lv 发表于 2022-4-20 17:32
您好,可以配置参数的,您可以这样设置,当你设置参数的时候,参数使用 {@参数} ,其余的左括号要再加一 ...
我的报表设计器不是JS版的

James.Lv 发表于 2022-4-21 23:16:29

杭州昱恒科技 发表于 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}}""};"



杭州昱恒科技 发表于 2022-4-22 09:18:27

本帖最后由 杭州昱恒科技 于 2022-4-22 09:22 编辑

James.Lv 发表于 2022-4-21 23:16
桌面端设计器这样来写,具体可以参考附件报表

="jsondoc=http://localhost:51980/api/graphql?token=3 ...
这样调控制器不行吗,像mvc的ajax调控制器那种

James.Lv 发表于 2022-4-22 16:05:46

杭州昱恒科技 发表于 2022-4-22 09:18
这样调控制器不行吗,像mvc的ajax调控制器那种

您好,这个没办法URL必须是完整地址
页: [1]
查看完整版本: 如何使用JSONAPI数据源发送POST请求以及传递Header