1. ホーム
  2. node.js

[解決済み] node.jsでHTTP POSTリクエストはどのように行われるのですか?

2022-03-16 20:38:34

質問

node.jsでデータ付きのHTTP POSTリクエストを送信するにはどうすればよいですか?

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

node.jsを使って、Google Compiler APIにPOSTリクエストをする例です。

// We need this to build our post string
var querystring = require('querystring');
var http = require('http');
var fs = require('fs');

function PostCode(codestring) {
  // Build the post string from an object
  var post_data = querystring.stringify({
      'compilation_level' : 'ADVANCED_OPTIMIZATIONS',
      'output_format': 'json',
      'output_info': 'compiled_code',
        'warning_level' : 'QUIET',
        'js_code' : codestring
  });

  // An object of options to indicate where to post to
  var post_options = {
      host: 'closure-compiler.appspot.com',
      port: '80',
      path: '/compile',
      method: 'POST',
      headers: {
          'Content-Type': 'application/x-www-form-urlencoded',
          'Content-Length': Buffer.byteLength(post_data)
      }
  };

  // Set up the request
  var post_req = http.request(post_options, function(res) {
      res.setEncoding('utf8');
      res.on('data', function (chunk) {
          console.log('Response: ' + chunk);
      });
  });

  // post the data
  post_req.write(post_data);
  post_req.end();

}

// This is an async file read
fs.readFile('LinkedList.js', 'utf-8', function (err, data) {
  if (err) {
    // If this were just a small part of the application, you would
    // want to handle this differently, maybe throwing an exception
    // for the caller to handle. Since the file is absolutely essential
    // to the program's functionality, we're going to exit with a fatal
    // error instead.
    console.log("FATAL An error occurred trying to read in the file: " + err);
    process.exit(-2);
  }
  // Make sure there's data before we post it
  if(data) {
    PostCode(data);
  }
  else {
    console.log("No data to post");
    process.exit(-1);
  }
});

ハードコードされた文字列の代わりに、ファイルからデータを投稿する方法を示すために、コードを更新しました。このコードでは、非同期の fs.readFile コマンドで実現し、読み込みに成功した後に実際のコードを投稿しています。エラーが発生した場合はエラーがスローされ、データがない場合は失敗を示す負の値でプロセスが終了します。