gpt4 book ai didi

javascript - 从进行 POST API 调用的异步方法获取响应、正文和错误

转载 作者:行者123 更新时间:2023-12-02 21:29:57 27 4
gpt4 key购买 nike

我使用此示例对 API 进行 POST API 调用:https://nodejs.dev/making-http-requests-with-nodejs#perform-a-post-request 。没有任何问题,运行良好。

接下来,我想创建一个函数,通过接收动态连接参数、 header 和有效负载来进行此 API 调用。这样做后,我就可以从函数返回响应对象,这样我就可以检测到 response.statusCode、response.statusMessage 等。这是我的 Node.js 代码:

模块代码

const https = require("https");

function postLendingApplication(connection, data, callback) {
const options = {
hostname: connection.hostname,
port: connection.port,
path: connection.path,
method: connection.method,
headers: connection.headers
};
//console.log(options)
const req = https.request(options, res => {
console.log(`statusCode: ${res.statusCode}`);

res.on("data", d => {
process.stdout.write(d);
});
callback(res);
});

req.on("error", error => {
console.error(error);
});

req.write(data);
req.end();
}

exports.postLendingApplication = postLendingApplication;

从另一个文件调用代码

const bpc = require("./public-api");

const data = JSON.stringify({
title: 'foo',
body: 'bar',
userId: 1
});

const connection = {
hostname: 'jsonplaceholder.typicode.com',
port: 443,
path: '/posts',
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Content-Length': data.length,
}
}

var response = bpc.postLendingApplication(connection, data, function(response) {
console.log("Inside the calling function");
//console.log(response);
console.log("Status Code: " + response.statusCode);
console.log("Status Message: " + response.statusMessage);
});

成功的控制台响应

statusCode: 201
Inside the calling function
Status Code: 201
Status Message: Created
{
"title": "foo",
"body": "bar",
"userId": 1,
"id": 101
}

问题:在我的回调方法中,我希望接收响应正文(JSON)以及错误,以便我可以基于以下内容运行一些断言我收到的响应/正文/错误。我无法弄清楚如何在模块方法中设置回调,以便它可以返回所有 3 个值。如果您能帮忙解决这个问题,我们将不胜感激。

这里是 Repl URL,以防您想在线查看:https://repl.it/@varun_verma/POST-API

最佳答案

我不是 100% 回答你所问的问题,我个人如果你想以这种方式使用回调,请使用两个函数,一个用于处理错误,一个用于成功响应

但是,如果您希望不传回项目,则可以使用对象销毁来给您未定义或将其默认为 null,如下所示:

模块代码

const https = require("https");

function postLendingApplication(connection, data, callback) {
const options = {
hostname: connection.hostname,
port: connection.port,
path: connection.path,
method: connection.method,
headers: connection.headers
};
//console.log(options)
const req = https.request(options, res => {
console.log(`statusCode: ${res.statusCode}`);
let data = ''

res.on("data", d => {
data += d;
});

res.on('end', () => {
callback({response: res, data});
});

});

req.on("error", error => {
console.error(error);
callback({response: res, error});
});

req.write(data);
req.end();
}

exports.postLendingApplication = postLendingApplication;

从另一个文件调用代码

const bpc = require("./public-api");

const data = JSON.stringify({
title: 'foo',
body: 'bar',
userId: 1
});

const connection = {
hostname: 'jsonplaceholder.typicode.com',
port: 443,
path: '/posts',
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Content-Length': data.length,
}
}

var response = bpc.postLendingApplication(connection, data, function({ response, data, error}) {
// if error is not passed back in the object it defaults to undefined
if (error) console.error(error)
console.log("Inside the calling function");
//console.log(response);
console.log("Status Code: " + response.statusCode);
console.log("Status Message: " + response.statusMessage);
});

关于javascript - 从进行 POST API 调用的异步方法获取响应、正文和错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60645668/

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