【问题标题】:How do I call the backend MarkLogic API from my own API in MarkLogic Grove?如何在 MarkLogic Grove 中从我自己的 API 调用后端 MarkLogic API?
【发布时间】:2020-11-17 07:02:41
【问题描述】:

这个问题是下面问题的延续。

How do I handle the REST API in node.js in Marklogic Grove?

我能够实现一个示例 REST API,当使用 Grove 进行身份验证时可以调用该 API,如下所示。

中间层/routes/index.js

const authProvider = require('../../grove-node-server-utils/auth-helper');

router.get('/my-rest-api/bar',(req, res) => {
  const response = {status : "success"};
  authProvider.isAuthenticated(req,res,()=>{
    res.send(response);
  });
});

接下来,我想从 my-rest-api 中调用 MarkLogic API。以下是我通过反复试验写的,但是出现了错误,我该怎么写呢?

中间层/routes/index.js

const authProvider = require('../../grove-node-server-utils/auth-helper');
const backend = require('../../grove-node-server-utils/backend');

router.get('/my-rest-api/bar',(req, res) => {
  const myResponse = {status : "success!!"};
  console.log("start");
  const backendOptions = {
    method: 'GET',
    path: '/v1/resources/myMarkLogicAPI?p1=test'
  };

  authProvider.isAuthenticated(req,res,()=>{
    console.log("preprocessing");
    backend.call(req, backendOptions, () => {
      console.log("postprocessing")
      res.send(myResponse);
    });
  });
});

错误信息是:{"message":"TypeError: Cannot convert undefined or null to object"}

【问题讨论】:

    标签: marklogic marklogic-dhf


    【解决方案1】:

    我怀疑代码期望 headers 属性作为 backendOptions 的一部分。我们通常将后端调用包装在 authProvider.getAuth 调用中,该调用返回我们传递给后端调用的身份验证标头。您可能希望这样做以确保您被允许访问后端。

    也就是说,使用我们的新DefaultRestRoute 可能更简单,正如您在上一个问题中提到的那样。我也在那里展示了一些示例代码。

    HTH!

    【讨论】:

    • 我已经使用 authProvider.getAuth 成功调用了 MarkLogic API。谢谢!这次我的最终目标是在 MarkLogic API 调用之前和之后在 Grove 上添加处理。 DefaultRestRoute 有可能吗?
    猜你喜欢
    • 2021-02-21
    • 1970-01-01
    • 2021-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多