Я использую этот пример для вызова API POST API: https://nodejs.dev/making-http-requests-with-nodejs#perform -a-post-request . Никаких проблем там нет, все работает хорошо.
Далее я хотел создать функцию, которая выполняет этот вызов API, принимая параметры подключения, заголовки и полезную нагрузку динамического c. Сделал это, и я смог вернуть объект ответа из функции, чтобы я мог обнаружить response.statusCode, response.statusMessage, et c. Вот мой 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 значения. Если вы можете помочь с этим, это будет с благодарностью.
Вот URL-адрес Repl на случай, если вы захотите попробовать его в Интернете: https://repl.it/@varun_verma / POST-API