繁体   English   中英

从Google Cloud Function调用Azure API

[英]Calling Azure API from Google Cloud Function

我已经开发了Google Cloud Function,它调用了AZURE中托管的API。 但是该函数返回错误

错误:函数崩溃详细信息:getaddrinfo ENOTFOUND https://bupanonproduction.azure-api.net https://bupanonproduction.azure-api.net:443

以下是谷歌云功能

'use strict';
const http = require('https');
const host = 'https://bupanonproduction.azure-api.net';
exports.remaininglimits = (req, res) => {
  // Call the API
  callRemainingLimitsApi().then((output) => {
    // Return the results from the API to API.AI
    res.setHeader('Content-Type', 'application/json');
    res.send(JSON.stringify({ 'speech': output, 'displayText': output }));
  }).catch((error) => {     
        // If there is an error let the user know
    res.setHeader('Content-Type', 'application/json');
    res.send(JSON.stringify({ 'speech': error, 'displayText': error }));
  });
};
function callRemainingLimitsApi () {
  return new Promise((resolve, reject) => {
    // Create the path for the HTTP request to get the weather
    let path = '/api/Values';
    console.log('API Request: ' + host + path);
    // Make the HTTP request to get the weather
    http.get({host: host, path: path, headers: {'Ocp-Apim-Subscription-Key':'0a6e2fa822ec4d7a821d7f286abb6990'}}, (res) => {
         let body = ''; // var to store the response chunks
      res.on('data', (d) => { body += d; }); // store each response chunk
      res.on('end', () => {
        // After all the data has been received parse the JSON for desired data
        let response = JSON.parse(body);
        let jasonString = JSON.stringify(response);
        // Create response
        let output = `Hi, your limit is ${jasonString}.`;
        // Resolve the promise with the output text
        console.log(output);
        resolve(output);
      });
      res.on('error', (error) => {
        reject(error);
      });
    });
  });
}

当我使用下面的其他公共API时,它将正确的结果返回到云函数。

https://www.alphavantage.co/query?function=TIME_SERIES_DAILY&symbol=MSFT&apikey=demo

知道云功能为何无法识别AZURE API网址吗?

-艾伦-

我刚刚发现主机应定义为不带前缀“ https”。 这解决了问题。 我正在使用$ 300的免费试用版,并且不确定是否将其视为付费计划。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM