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

Express.JS Get Status Code from POST Request

我需要找到一种方法来获得 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() 之后 运行 来判断实际请求是否成功。这是使用 API 框架(例如 Flask-Python)的标准,但我似乎无法在 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();