Express.JS从POST请求中获取状态码



我需要找到一种方法来获得响应作为https post请求的结果。到目前为止,我发现它只在回调函数中提供,它不包括将数据写入请求后的结果,并以如下所示结束:

**注意:下面的代码将被包装在"app.post"方法。

const https = require("https");
var url = "https://someurl.com";
var options = {option1: "some option"}
var jsonData = {data1: "some data"};
const request = https.request(url, options, function (repsonse) {
// HERE THE STATUS CODE ONLY CAPTURES IF THE RESOURCE WAS AVAILABLE 
// NOT IF THE REQUEST WAS SUCCESSFUL
console.log(response.statusCode);
});
request.write(jsonData);
request.end();

request.end()"代码我需要能够获得从请求返回的状态码,以确定实际请求是否成功。我想这样做:

if (response.statusCode !== 200) {
res.sendFile(__dirname + "/failure.html");
}
else {
res.sendFile(__dirname + "/success.html");
}

if语句应该在request.end()之后运行,以确定实际请求是否成功。这是使用Flask-Python等API框架的标准,但我似乎找不到在express.js中捕获此问题的方法。如有任何帮助,不胜感激。

https.request异步工作。请求是否成功不能在request.end()之后同步确定,而只能在回调函数(您可以评估response.statusCode)或error事件(如果请求根本无法发出,例如,因为服务器不可达)中确定。

const request = https.request(url, options, function (response) {
console.log(response.statusCode);
if (response.statusCode !== 200)
res.sendFile(__dirname + "/failure.html");
else
res.sendFile(__dirname + "/success.html");
});
request.on("error", function(err) {
console.error(err);
res.sendFile(__dirname + "/failure.html");
});
request.write(jsonData);
request.end();