ExpressJs server中Router的设置
expressjs的路由设置方法
1. Route Path的3种写法:
实例:
app.get('/opus/.*.html', handler); // 模式字串,用单引号'', 不是RegExp
app.get(/\/opus\/.*\.html/, handler); // RegExp, 用斜杠/ /
只有后者匹配: "/opus/XXXX.html", 前者不
* RegExp正则字串写法
* 模式字串(String Pattern): 只允许少量的特殊标记 ? * +和( ), (备注: 不包括.和-), 含义与RegExp中一样,
b? 匹配{0,1}个b
b+ 匹配{1,n}个b
b* 匹配{0,n}个b
* 普通字串: 没有任何特殊字符
这个3种写法适用于各种http操作(get,put和post), Route Path和Request方法一起定义一个endpoint, 完成一个请求的操作。
2. app.get(),代价小,优先用。 app.use()速度慢
app.get('/', handler): 增加一个路径'/'及其handler到routing 表,只有当http GET '/'的时候, 才调用此handler,永远不会被非"/"的 routes调用。
app.use('/', middleware): 增加一个middleware到stack, .所有以'/'开头的路径(不论http操作是GET/PUT/POST), 都会执行此middleware。
* stack中的每一个middleware都是一个函数,拥有形参(req, res, next)。 stack中的每一个middleware都会被前者通过next()显式调用。
* express.static(__dirname + '/pub') 返回一个middleware专门检查req的path, 并且以streams返回res的content.
///////////////////////////////////
一、基本方法:
app.METHOD(PATH, HANDLER)
把路径path和操作方法method(可以是http的get/put/delete等),映射到一个处理函数handler
例如:
app.get('/user', function (req, res) {
res.send('Got a PUT request at /user');
});
二、使用express.Router的方法
定义一组路径. 例如:
/birds
/birds/about
1) 先在Router文件中,只定义相对路径/和/about
var express = require('express');
var router = express.Router();
// define the home page route
router.get('/', function(req, res) {
res.send('Birds home page');
});
// define the about route
router.get('/about', function(req, res) {
res.send('About birds');
});
module.exports = router;
2) 在主文件中, 定义base路径/birds,
var birds = require('./birds');
app.use('/birds', birds);