1. ホーム
  2. node.js

[解決済み] Node Jsでサードパーティーモジュールなしでhttpsのポストを作るには?

2023-02-25 23:45:11

質問

私は、httpsのgetとpostメソッドを必要とするプロジェクトに取り組んでいます。短いhttps.get関数がここで動作しているのですが...。

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要求を行うには? が、コンソールエラーを返します。

同じapiにブラウザでAjaxでgetとpostを使っても問題なかったのですが。https.getを使ってクエリ情報を送ることはできますが、これが正しい方法とは思えませんし、後で拡張しようと思ってもファイルを送ることがうまくいかないと思います。

もしあればhttps.postになるものをhttps.requestにするための、最低限の要件を備えた小さな例はないでしょうか?npmモジュールは使いたくありません。

どのように解決するのですか?

例えば、こんな感じです。

const https = require('https');

var postData = JSON.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();