Expressによるリクエスト処理の基本 (1/4)
作成:2013-05-21 08:18
更新:2015-08-13 13:29
更新: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のアクセス処理では、以下のようにしてクエリー文字列から値を取り出し利用しています。
※ここでの例は、expressコマンドでWebアプリケーションを生成し利用する前提で記述しています。expressコマンドによるアプリの生成については以下を参照ください。
http://libro.tuyano.com/index3?id=1152003
まず、誰もが思いつくのは「クエリー文字列」を利用することでしょう。クエリー文字列というのは、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;クエリー文字列が渡されていない場合、p1とp2の値はundefinedとなります。undefinedでなければ、クエリー文字列で何かの値が渡されている、と考えてよいでしょう。
var p2 = req.query.p2;
var msg = p1 == undefined ? "" : p1 + "," + p2;
※ここでの例は、expressコマンドでWebアプリケーションを生成し利用する前提で記述しています。expressコマンドによるアプリの生成については以下を参照ください。
http://libro.tuyano.com/index3?id=1152003
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
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);
※関連コンテンツ