gpt4 book ai didi

node.js - 如何从Azure函数进行https调用?

转载 作者:太空宇宙 更新时间:2023-11-03 22:59:11 24 4
gpt4 key购买 nike

我尝试使用 nodeJS 创建 Azure 函数,但是当我调用 https API 时,收到错误消息。

是否可以从 azure 函数进行 HTTPS 调用?

这是我的代码

const https = require('https');
const querystring = require('querystring');

module.exports = async function (context, req) {

if (req.query.accessCode || (req.body && req.body.accessCode)) {

var options = {
host: 'api.mysite.com',
port: 443,
path: '/oauth/access_token',
method: 'POST'
};

var postData = querystring.stringify({
client_id : '1234',
client_secret: 'xyz',
code: req.query.accessCode
});


var req = https.request(options, function(res) {
context.log('STATUS: ' + res.statusCode);
context.log('HEADERS: ' + JSON.stringify(res.headers));

res.on('data', function (chunk) {
context.log('BODY: ' + chunk);
});
});

req.on('error', function(e) {
context.log('problem with request: ' + e.message);
});

req.write(postData);
req.end();

context.res = {
status: 200,
body: "Hello " + (req.query.accessCode)
};
} else {
context.res = {
status: 400,
body: "Please pass a name on the query string or in the request body"
};
}

context.done();
};

我收到错误,但在控制台上没有看到任何错误,而且如果我注释所有 https 调用,它也可以正常工作,并且我可以在屏幕上看到 Hello 消息。

最佳答案

需要解决的两点

  1. 删除context.done();。请参阅Azure document .

    If your function uses the JavaScript async function declaration (available using Node 8+ in Functions version 2.x), you do not need to use context.done(). The context.done callback is implicitly called.

  2. 将您的 https.request 重命名为 var myReq = https.request(options, function(res)

    由于函数声明了内置 req 对象,因此存在名称冲突,导致错误。

关于node.js - 如何从Azure函数进行https调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52546638/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com