Entertainer Engineering

人を楽しませられる技術者を目指すあおかびんのブログ

Node.jsのExpressの中でPOSTリクエストを受け取ろうと詰まった話

こんばんは、毎度おなじみaokabinです。
なかなかブログ読んでくれる人増えないですねー、周知していないからだと思いますが。

さて、タイトルにあるように、Node.jsのExpressを使って開発を進めているのですが
POSTリクエストがどうもうまく通らなくて3時間くらい使っちゃったので
忘れないうちにメモを取りたいと思います。

最近使い始めたのでExpress自体よくわかっていないのですが、まぁなあなあで。

流れとしては以下の様な感じ
1.app.js内部に書くもの
2.routes/以下のjsファイルに書くもの

1.app.js内部に書くもの
expressコマンドでテンプレートを書き出した際にapp.jsはできていると思うのですが、そこに幾つかの項目を書いていきましょう。
今回はroutes/test.jsというファイルがある事を想定して書いていきたいと思います。

app.jsの中のroutesとかusersとかの下に、以下を記述しましょう。

var test = require('./routes/test');

続いて、POSTリクエストを受け取るのに必要なのがコレ

app.use(bodyParser.urlencoded({extended : false}));

コレを記述する事で、2で書く書き方で取り出す事ができます。

そして、忘れないように

app.post('/test', test.post_test);

これは/testにアクセスしたときにtestのpost_testというfunctionが呼び出されるという記述になります(多分)

続いて2では、このpost_testメソッドを作っていきましょう。

2.routes/test.jsに書くもの
POSTデータの受け取りは以下のような感じになります。
例えば、name=aokabinというようにデータをPOSTしている場合

exports.post_test = function(req, res){
 console.log(req.param('name'));
 res.send(true);
};

というように記述すると、nameに入ったaokabinというデータが出力されると思います。

コレを探すのに時間がかかったというのはちょいと苦労がありましたが、何とかなってよかった…。
今度はasyncについて書いとかないと忘れそう。

何かコメントがありましたら、随時募集しておりますので、気軽にどうぞー。

追記
これ最近のはデフォルトで入っているんですね、知らなかった…