本文使用的express-generator生成的项目
get, post, put, head, delete, options, trace, copy, lock, mkcol,
move, purge, propfind, proppatch, unlock, report, mkactivity,
checkout, merge, m-search, notify, subscribe, unsubscribe, patch,
search, 和 connect。
在router文件中
var express = require('express');
var router = express.Router();
/*使用属于本路由文件的中间件 */
router.use(function(req, res, next) {
console.log(`Time: ${new Date()}`);
next();
});
/* GET home page. */
router.get('/', function(req, res, next) {
res.render('index', { title: 'Express' });
});
/* POST home page */
router.post('/', function(req, res, next) {
console.log('post');
// res.json({name: 'syc', value: '1231231'});
res.send('post request');
});
router.get('/', function(req, res, next) {
res.render('index', { title: 'Express' });
});
字符 ?、+、* 和 () 是正则表达式的子集,- 和 . 在基于字符串的路径中按照字面值解释。
// 问号是b出现0次或者1次的意思,所以匹配abcd,acd
router.get('/ab?cd', function(req, res, next) {
res.render('index', { title: 'Express' });
});
// 匹配任何路径中含有 a 的路径:
app.get(/a/, function(req, res) {
res.send('/a/');
});
路由句柄可以有多个,即一个路由可以有多个处理函数
function func1(req, res, next) {
console.log('func1');
next();
}
function func2(req, res, next) {
console.log('func2');
next();
}
function func3(req, res, next) {
console.log('func3');
next();
}
router.get('/arr', [func1, func2, func3], function(req, res){
res.send('经历3个函数完成请求');
});
方法 | 描述 |
---|---|
res.download() |
|
res.end() |
|
res.json() |
|
res.jsonp() |
|
res.redirect() |
|
res.render() |
|
res.send() |
|
res.sendFile |
|
res.sendStatus() |
|
此方法目前理解应该写到app.js中,后面不知道有没有更好的用法
app.all('/secret', function (req, res, next) {
console.log('Accessing the secret section ...');
next(); // pass control to the next handler
});
此方法写到某一个路由文件中,功能是拦截此路由文件中所有的路由
/*使用属于本路由文件的中间件 */
router.use(function(req, res, next) {
console.log(`Time: ${new Date()}`);
next();
});
待续…