はじめに
node.js + expressでgetとpostのリクエストパラメタを取得する方法を試してみました。サンプルプログラムを作るにあたり、以下のサイトを参考にさせていただきました。
Getを使う場合
サーバサイドのプログラム(get.js)はこんな感じです。
★のところでGETリクエストに対する処理をしています。req.query.xxxでGETリクエストのパラメタを取得することができます。
// expressの読み込み var express = require('express'); // serverオブジェクトの作成 var app = express.createServer(); // ejsのレイアウトをoff app.set('view options', { layout: false }); // getでリクエストがきたときの処理 ---- ★ app.get('/', function(req, res){ console.log(req.query); // for logging var name = ""; // NAMEパラメタが空でなければ画面に表示 if (req.query.name) { name = req.query.name; } res.render('get.ejs', { locals: { name: name } }); }); app.listen(3000);
クライアントサイドのプログラム(get.ejs)はこんな感じです。<%= name %>のところが動的に書き変わります。
<html> <head> <title>node.jsでGET</title> </head> <body> <h1>node.jsでGET</h1> <%= name %><br /> <form method="GET" action="/"> <input type="text" name="name" id="name" /> <input type="submit" /> </form> </body> </html>
POSTを使う場合
サーバサイドのプログラム(post.js)はこんな感じです。
★1のところでPOSTリクエストに対する処理をしています。POSTパラメータを取得するには、express.bodyDecoderメソッド(★2)を呼びだし、req.body.xxxでデータを取得することができます。
express.bodyDecorderによって,req.bodyの中がオブジェクト化されたPOSTパラメータになります.
node.js+expressでPOSTパラメーターを取得する方法 ::ハブろぐ
// expressの読み込み var express = require('express'); // serverオブジェクトの作成 var app = express.createServer(); // ejsのレイアウトをoff app.set('view options', { layout: false }); // postデータを扱う際のおまじない ---- ★2 app.use(express.bodyDecoder()); // 初回アクセスの処理 app.get('/', function(req, res){ res.render('post.ejs', { locals: { name: "" } }); }); // postの処理 ---- ★1 app.post('/', function(req, res){ console.log(req.body); // for logging var name = ""; if (req.body.name) { // postデータはreq.body.xxxで受け取る name = req.body.name; } res.render('post.ejs', { locals: { name: name } }); }); app.listen(3000);
クライアントサイドのプログラム(get.ejs)はこんな感じです。<%= name %>のところが動的に書き変わります。
<html> <head> <title>node.jsでPOST</title> </head> <body> <h1>node.jsでPOST</h1> <%= name %><br /> <form method="POST" action="/"> <input type="text" name="name" id="name" /> <input type="submit" /> </form> </body> </html>
サンプルプログラムを動かす
サンプルプログラムを動かすには、以下のようにサンプルプログラムを配置し、nodeコマンドでサーバプログラムを起動します。続いて、ブラウザでhttp://localhost:3000/にアクセスすると試せます。
node get.js
サンプルプログラムの配置
./get.js ./post.js ./views/get.ejs ./views/post.ejs