这个问题是下面问题的继续。
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内部调用rest API。我通过试错写了下面的代码,但是一个错误occurs.How我应该写吗?
中间层/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:无法将未定义或null转换为对象“}
发布于 2020-11-17 16:27:05
我怀疑代码期望headers属性作为backendOptions的一部分。我们通常将后端调用包装在一个authProvider.getAuth调用中,该调用返回我们传递给后端调用的身份验证头。您可能想要执行相同的操作,以确保您可以访问后端。
也就是说,使用您上一个问题中提到的新DefaultRestRoute可能会更简单。我还展示了其中的一些示例代码。
哈!
https://stackoverflow.com/questions/64870662
复制相似问题