libro
www.tuyano.com
初心者のための Node.jsプログラミング入門

Expressによるリクエスト処理の基本 (1/4)

作成:2013-05-21 08:18
更新:2015-08-13 13:29

■クエリー文字列によるパラメータ送信

あるページから別のページにアクセスをするとき、何らかの形で必要な情報を受け渡す必要があったとします。どのようなやり方が考えられるでしょうね?

まず、誰もが思いつくのは「クエリー文字列」を利用することでしょう。クエリー文字列というのは、URLの末尾に?を使って値を記述したものですね。例えば、 http://○○/index?a=hello というような形でURLを指定することで、aというパラメータに"hello"を設定して送ることができます。

このクエリー文字列の値は、Requestオブジェクトの「query」プロパティ内にまとめられています。この中に、それぞれのキーごとにプロパティとして値が保管されています。例えば、/index?a=helloであれば、quey.a"hello"が保管されている、というわけです。

実際に簡単な利用例を挙げておきましょう(下のリスト欄)。前回作成したように、「views」内にhelo.ejs、「routes」内にhelo.jsを配置し、app.js内にこれらを利用するためのコードを追記します。

ここでは、href="/helo?p1=hello&p2=bye"というようにして<a>タグのリンクを作成しています。そして/heloのアクセス処理では、以下のようにしてクエリー文字列から値を取り出し利用しています。
var p1 = req.query.p1;
var p2 = req.query.p2;
var msg = p1 == undefined ? "" : p1 + "," + p2;
クエリー文字列が渡されていない場合、p1p2の値はundefinedとなります。undefinedでなければ、クエリー文字列で何かの値が渡されている、と考えてよいでしょう。


※ここでの例は、expressコマンドでWebアプリケーションを生成し利用する前提で記述しています。expressコマンドによるアプリの生成については以下を参照ください。
http://libro.tuyano.com/index3?id=1152003

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

※views/helo.ejs

  <body>
    <h1><%= title %></h1>
    <p><%= msg %></a>
    <p><a href="/helo?p1=hello&p2=bye">link</a></p>
  </body>


※routes/helo.js

var express = require('express');
var router = express.Router();

/* GET helo page. */
router.get('/', function(req, res, next) {
    var p1 = req.query.p1;
    var p2 = req.query.p2;
    var msg = p1 == undefined ? "" : p1 + "," + p2;
    res.render('helo', 
        {
            title: 'HELO Page',
            msg: msg
        }
    );
});

module.exports = router;
app.get('/helo', helo.helo);

※関連コンテンツ

「初心者のための Node.jsプログラミング入門」に戻る