三方系统有个报表接口查询数据大于20s以上如何在宜搭上调用这个接口并且把数据取到宜搭上呢
你可以通过宜搭开放的 API 进行数据获取,配置连接器工厂将 HTTP 或者 HTTPS 的接口注册,然后在表单中通过 JavaScript 调用。具体步骤如下:
const Url = require('url');
const API_SERVER = 'https://api.dingtalk.com';
const API_VERSION = 'v1.0';
// 获取 token 鉴权接口
exports.handler = (req, resp, context) => {
resp.setHeader('Content-type', 'application/json');
getRawBody(req, function (err, body) {
post(`${API_SERVER}/${API_VERSION}/oauth2/accessToken`, {
appKey: 'dinglg-xxxxxx',
// 钉钉开发者 appkey
appSecret: 'h1g7F3-xxxxxx',
// 钉钉开发者 appsecret
function (data) {
data = JSON.parse(data);
if (data.expireIn) {
var respBody = new Buffer.from(JSON.stringify(data));
resp.setStatusCode(200);
resp.send(respBody);
} else {
var respBody = new Buffer.from(JSON.stringify({
success: 'false',
errMsg: '获取失败',
errCode: '400'
}));
resp.setStatusCode(200);
resp.send(respBody);
}
}
});
});
};
// 获取数据接口
exports.getData = (req, resp, context) => {
resp.setHeader('Content-type', 'application/json');
getRawBody(req, function (err, body) {
let pageSize = req.queries.pageSize ? req.queries.pageSize : 10;
let url = `${API_SERVER}/${API_VERSION}/open-apis/data捞取接口`;
// 将捞取接口替换为实际的接口路径
url += `?pageSize=${pageSize}&systemToken=${systemToken}&userId=${userId}`;
// 宜搭应用秘钥
const options = {
host: parse_u.hostname,
port: parse_u.port || (isHttp ? 80 : 443),
path: parse_u.path,
method: 'POST',
json: true,
headers: {
'Content-Type': 'application/json',
}
};
let req = require(isHttp ? 'http' : 'https').request(options, function (res) {
let _data = '';
res.on('data', function (chunk) {
_data += chunk;
});
res.on('end', function () {
// 将 _data 替换为实际的数据处理逻辑
fn != undefined && fn(_data);
req.write(JSON.stringify(data));
req.end();
});
});
});
};
请注意,第三方系统的报表接口查询数据大于20s,可能是由于网络延迟、服务器响应时间较长等原因造成的。你可以优化接口查询语句或增加服务器的硬件资源来提高查询速度。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。