使用 SAP Cloud Platform 中的 Approuter 在 MTA 应用中获取 Approuter URL

问题描述

使用应用路由器在 VS Code 中创建了一个 MTAR 应用程序。将 approuter 的启动文件更改为不同的文件,例如 custominfo.js 如下

enter image description here

下面是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 (将#修改为@)