拙著「WordPress Web開発逆引きレシピ」が発売されました。
WordPressの様々なカスタマイズについて、逆引きの形式で取り上げています。
PHP 7.0での動作確認も行っています。
Node.jsを学ぶ(その5・POSTに対応する・前編)
フォームの処理を行う際に、フォームのデータを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プロパティの値が、フォームから送信された値になります。