MarkLogic Grove의 자체 API에서 백엔드 MarkLogic API를 호출하려면 어떻게해야합니까?
Nov 17 2020
이 질문은 아래 질문의 연속입니다.
Marklogic Grove의 node.js에서 REST API를 어떻게 처리합니까?
아래 그림과 같이 Grove에서 인증 할 때 호출 할 수있는 샘플 REST API를 구현할 수있었습니다.
middle-tier / 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를 호출하고 싶습니다. 시행 착오를 거쳐 다음과 같이 썼는데 오류가 발생하는데 어떻게 써야하나요?
middle-tier / 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을 개체로 변환 할 수 없습니다."}입니다.
답변
grtjn Nov 17 2020 at 08:27
코드가 backendOptions의 일부로 headers 속성을 기대하고 있다고 생각합니다. 일반적으로 백엔드 호출에 전달하는 인증 헤더를 반환하는 authProvider.getAuth 호출에서 백엔드 호출을 래핑합니다. 백엔드에 액세스 할 수 있는지 확인하기 위해 동일한 작업을 수행 할 수 있습니다.
즉, 이전 질문에서 언급했듯이 새로운 DefaultRestRoute 를 사용하는 것이 더 간단 할 수 있습니다 . 거기에 샘플 코드도 보여주었습니다.
HTH!