Node.jsを学ぶ(その5・POSTに対応する・前編)

  • 投稿日:
  • by
  • カテゴリ:

フォームの処理を行う際に、フォームのデータをPOSTで送信することも多いです。
そこで、Node.jsでPOSTに対応する方法を紹介します。

1.formidableのインストール

Node.jsの標準機能だけでも、POSTで送信されたデータを処理することは可能です。
ただ、GETと比べるとコードが複雑になります。

そこで、「Formidable」というモジュールを使うことにします。
Formidableは、POSTで送信されたフォームのデータを読み込んで、その後の処理で扱いやすいようにしてくれるモジュールです。

Node.jsでは、ユーザーによって、数多くのモジュールが作られています。Formidableもその1つです。
また、現在のNode.jsでは、「npm install モジュール名」のコマンドで、モジュールを簡単にインストールすることができます。

Formidableモジュールをインストールするには、以下の手順を取ります。

  • プログラムのソースコードを配置したいディレクトリを、カレントディレクトリにします。
  • 「npm install formidable」のコマンドを入力します。

すると、インターネットからFormiableがダウンロードされ、カレントディレクトリにインストールされます。

なお、本記事執筆時点のNode.jsはバージョン0.10.4です。
一方、本記事執筆時点でFormidableをインストールしようとすると、「Node.jsの0.9.0以前が必要」といった警告メッセージが表示されました。
ただ、こちらで試した限りでは、Node.jsの0.10.4でもFormidableを使うことができました。

2.POSTされたデータの処理

formidableを使って。POSTされたデータをパースして処理する基本的な書き方は、以下のようになります。

var formidable = require('formidable');
...
function listener(request, response) {
  ...
  var form = new formidable.IncomingForm();
  form.parse(request, function(err, fields, files) {
    パースされたデータの処理
  });
  ...
}

1行目のrequire関数で、formidableを読み込み、変数formidableに割り当てます。
そして、5行目のIncomingFormメソッドでフォームのオブジェクトを作り、6行目のparseメソッドでデータをパースします。

パースされたデータは、parseメソッドのパラメータのコールバック関数に渡されます。
コールバック関数のパラメータのfieldsは、フォームの個々のフィールドの名前と値に対応するオブジェクトになっています。
また、filesのパラメータは、アップロードされたファイルの情報が入ったオブジェクトになります。

例えば、フォームの中に、name属性が「foo」のinput要素があるとします。
この場合、コールバック関数に渡されたfieldsには、fooというプロパティが作られます。
そして、このfooプロパティの値が、フォームから送信された値になります。