2016年1月3日日曜日

node expressのURLのハンドリング

nodeのexpressでURLのpathnameによって、動作させるプログラムを紐つける方法についてのメモです。
(*URLは開発環境での場合です。)

次のURL2つをそれぞれ、別のプログラムを動作させます。

1)http://localhost:3000/
2)http://localhost:3000/test

app.jsのapp.use関数の第1引数にpathnameを設定します。
そして、第2引数は、動作させるプログラムを設定します。

1)の場合は、app.use('/', routes);
2)の場合は、app.use('/test', test);

動作させるプログラムの、router.getの第1引数は'/'を設定します。
2)の場合も、'/'を設定します。'/test'を設定してはダメです。
'/test'を設定して、動作させるとHTTPステータス404(Not Found)になります。

2)を動作させるために、関連する箇所のプログラムは以下になります。

app.jsの先頭部分

var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');

var app = express();

// ECT view engine setup
var ECT = require('ect');
var ectRenderer = ECT({ watch: true, root: __dirname + '/views', ext: '.ect'});
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ect');
app.engine('ect', ectRenderer.render);

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

app.use('/', routes);
app.use('/test', test);


test.jsの内容

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

/* GET home page. */
router.get('/', function(req, res, next) {
    res.render('test');
});

module.exports = router;


0 件のコメント :

コメントを投稿