node學習之express: 路由
阿新 • • 發佈:2019-02-19
一.基礎部分
本文使用的express-generator生成的專案
1.路由方法
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。
2.路由使用
在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');
});
3.路由路徑匹配3中模式
(1)字串
router.get('/', function(req, res, next) {
res.render('index', { title: 'Express' });
});
(2)字串模式
字元 ?、+、* 和 () 是正則表示式的子集,- 和 . 在基於字串的路徑中按照字面值解釋。
// 問號是b出現0次或者1次的意思,所以匹配abcd,acd
router.get('/ab?cd', function(req, res, next) {
res.render('index', { title: 'Express' });
});
(3)正則表示式模式
// 匹配任何路徑中含有 a 的路徑:
app.get(/a/, function(req, res) {
res.send('/a/');
});
4.路由中路由控制代碼(回撥函式)
路由控制代碼可以有多個,即一個路由可以有多個處理函式
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個函式完成請求');
});
5.路由響應方法
方法 | 描述 |
---|---|
res.download() |
|
res.end() |
|
res.json() |
|
res.jsonp() |
|
res.redirect() |
|
res.render() |
|
res.send() |
|
res.sendFile |
|
res.sendStatus() |
|
6.註冊處理同一個路由上所有方法(get,post,put等)的方法
此方法目前理解應該寫到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();
});
二.高階部分
待續…