【Node.js/Express】FORMを取得

Node.jsモジュール「Express」でPOSTされたFORMデータを受け取る方法を入門者向けにサンプルコード付きでまとめました。

FORMデータの受信

Node.jsモジュール「Express」では、urlencodedメソッドでPOSTされたFORMデータを受け取って処理できます。

サンプルコード

サンプルプログラムのソースコードです。
■index.js(サーバー側)

// ポート番号
var port = 8080;

var express = require('express');
var app = express();
var body = require('body-parser');
app.use(body.urlencoded({extended:true}));

// POSTされたFORMデータの取得
app.post('/', function(req, res) {
  for (key in req.body) {
    console.log(key, '=', req.body[key]); // コンソール出力
  }
  res.end();
});
app.listen(port);

extendedがtrue の場合・・・デコーダーにqsライブラリを使用
extendedがfalse の場合・・・デコーダーにquerystring ライブラリを使用

実行手順

①ターミナル(Windowsならコマンドプロンプト)を開きます。

② 以下のコマンドを実行します。
※Webサーバー側の起動

node <index.jsのファイルパス>
注意事項
※1 <index.jsのファイルパス>はindex.jsを配置した場所によって適宜変更
※2 Windowsならカレントディレクトリは「C:\Users\ユーザー名」

③ 手順②とは別に、もう1つターミナル(Windowsならコマンドプロンプト)を開きます。
※クライアント側用

④ 以下のコマンドを実行します。(バイナリデータをHTTP送信)
※クライアント側でWebサーバーへアクセス

curl -X POST -d "servant[1]=Saver&servant[2]=Archer" http://localhost:8080/

参考:【UNIXコマンド】curlでHTTPアクセス

⑤ 手順②で開いたターミナルに取得したPOSTデータが出力されます。

servant = [ 'Saver', 'Archer' ]
関連ページ
1 【Node.js入門】サンプル集と使い方まとめ
関連記事