关于node.js:如何在没有任何第三方模块的Node Js中发布https帖子?

How do I make a https post in Node Js without any third party module?

我正在开发一个需要https get和post方法的项目。 我在这里有一个简短的https.get函数...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
const https = require("https");

function get(url, callback) {
   "use-strict";
    https.get(url, function (result) {
        var dataQueue ="";    
        result.on("data", function (dataBuffer) {
            dataQueue += dataBuffer;
        });
        result.on("end", function () {
            callback(dataQueue);
        });
    });
}

get("https://example.com/method", function (data) {
    // do something with data
});

我的问题是没有https.post,我已经在这里用https模块尝试了http解决方案如何在node.js中发出HTTP POST请求? 但返回控制台错误。

我在浏览器中使用Ajax和Ajax发布到同一个api时没有问题。 我可以使用https.get来发送查询信息,但我认为这不是正确的方法,如果我决定扩展,我认为它不会在以后发送文件。

是否有一个小的例子,有最低要求,使https.request成为https.post,如果有的话? 我不想使用npm模块。


例如,像这样:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
const querystring = require('querystring');
const https = require('https');

var postData = querystring.stringify({
    'msg' : 'Hello World!'
});

var options = {
  hostname: 'posttestserver.com',
  port: 443,
  path: '/post.php',
  method: 'POST',
  headers: {
       'Content-Type': 'application/x-www-form-urlencoded',
       'Content-Length': postData.length
     }
};

var req = https.request(options, (res) => {
  console.log('statusCode:', res.statusCode);
  console.log('headers:', res.headers);

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

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

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