Comment appeler l'API MarkLogic backend à partir de ma propre API dans MarkLogic Grove?
Cette question fait suite à la question ci-dessous.
Comment gérer l'API REST dans node.js dans Marklogic Grove?
J'ai pu implémenter un exemple d'API REST qui peut être appelé lors de l'authentification avec Grove, comme indiqué ci-dessous.
niveau intermédiaire / 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);
});
});
Ensuite, je souhaite appeler l'API MarkLogic à partir de my-rest-api. J'ai écrit ce qui suit par essais et erreurs, mais une erreur se produit, comment dois-je l'écrire?
niveau intermédiaire / 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);
});
});
});
Le message d'erreur est: {"message": "TypeError: Cannot convert undefined or null to object"}
Réponses
Je soupçonne que le code attend une propriété headers dans le cadre de backendOptions. Nous encapsulons généralement l'appel backend dans un appel authProvider.getAuth qui renvoie un en-tête d'authentification que nous transmettons à l'appel backend. Vous voudrez peut-être faire de même pour vous assurer que vous êtes autorisé à accéder au backend.
Cela dit, il peut être plus simple d'utiliser notre nouveau DefaultRestRoute comme mentionné dans votre question précédente. J'ai également montré un exemple de code.
HTH!