Я использую API Microsoft Cognitive Services для nodejs (joshbalfour/node-cognitive-services). Я следовал коду в соответствии с примером документации. Однако я обнаружил, что ответ всегда «не определен».
face.listPersonGroups({
parameters
})
.then((response) => {
console.log('Got response:', response); //always undefined?
})
.catch((err) => {
console.error('Encountered error making request:', err);
});
Это вызов face.js из репозитория, makeRequest фактически делает запрос.
return verifyParameters(operation, parameters)
.then(makeRequest({
operation,
parameters,
API_KEY
}));
Если я запишу вывод на консоль в api.js, я увижу фактический ответ от API когнитивных служб (200 OK).
const makeRequest = ({operation, parameters, body, API_KEY}) => {
let headers = {
'Ocp-Apim-Subscription-Key': API_KEY
};
let path = operation.uriTemplate;
operation.parameters.forEach((param) => {
if (parameters[param.name] && param.type == 1){
path = path.split(`{${param.name}}`).join(parameters[param.name]);
parameters[param.name] = undefined;
}
});
let uri = `${operation.scheme}://${operation.host}/${path}`;
const options = {
uri,
method: operation.method,
headers,
qs: parameters,
json: true,
body
};
//if you output the response from 'rp' here we get the actual result (200 OK)
return rp(options);
Таким образом, фактический вызов API работает нормально, но возврат значения — нет. Если кто-нибудь может объяснить, почему ответ в моем контроллере всегда «не определен», это было бы очень полезно.
.then(makeRequest({operation, parameters, API_KEY}));
должно быть.then(return makeRequest({operation,parameters,API_KEY}));
- person Maria Ines Parnisari   schedule 02.09.2017