小さい頃はエラ呼吸

いつのまにやら肺で呼吸をしています。


node.js + expressでgetとpostのリクエストパラメタを取得する

はじめに

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パラメーターを取得する方法 ::ハブろぐ はてなブックマーク - 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