问题描述
使用应用路由器在 VS Code 中创建了一个 MTAR 应用程序。将 approuter 的启动文件更改为不同的文件,例如 custominfo.js 如下
下面是custominfo.js中的代码
const approuter = require("@sap/approuter");
const jwtDecode = require("jwt-decode");
const rp = require("request-promise");
const xsenv = require("@sap/xsenv");
xsenv.loadEnv();
const dest_service = xsenv.getServices({ dest: { tag: "destination" } }).dest;
const uaa_service = xsenv.getServices({ uaa: { tag: "xsuaa" } }).uaa;
const sUaaCredentials = dest_service.clientid + ":" + dest_service.clientsecret;
const sDestinationName = "devapi";
let ar = approuter();
ar.beforeRequestHandler.use("/data",(req,res) => {
let email = jwtDecode(req.user.token.accesstoken).email;
return rp({
uri: uaa_service.url + "/oauth/token",method: "POST",headers: {
"Authorization": "Basic " + Buffer.from(sUaaCredentials).toString("base64"),"Content-type": "application/x-www-form-urlencoded"
},form: {
"client_id": dest_service.clientid,"grant_type": "client_credentials"
}
}).then((data) => {
const token = JSON.parse(data).access_token;
return rp({
uri: dest_service.uri + "/destination-configuration/v1/destinations/" + sDestinationName,headers: {
"Authorization": "Bearer " + token
}
});
}).then((data) => {
const oDestination = JSON.parse(data);
const url = oDestination.destinationConfiguration.URL;
// need to send email address and app router url to fetch some json data in the API c
configured in destination
}).then((result) => {
}).catch((error) => {
});
});
ar.start();
在上面的节点 js 脚本中,我需要将电子邮件地址和应用路由器 URL 发送到其他 REST api 以获取一些数据。
问题是
我如何从第一个请求承诺 (rp) 中的 JWT 令牌获取电子邮件地址,并从第二个请求承诺 (rp) 中的目标服务获取目标 URL,并将这些内容传递给第三个请求承诺 (rp)。
第三个请求承诺应该触发一个 REST API(Url 是从第二个 RP 的目标服务中提取的),并且应该将邮件地址和应用路由器 URL 发送到该 REST API 返回自定义 JSON 的标题部分。
我能够在单独的请求承诺中获取 url 和电子邮件,但无法获取应用路由器 URL。
问候
普拉萨德
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)