
154
|
第
14
章
function authorize(req, res, next) {
if(req.session.authorized) return next()
res.render('not-authorized')
}
app.get('/public', () => res.render('public'))
app.get('/secret', authorize, () => res.render('secret'))
14.4
路由路径和正则表达式
当你在路由中指定一个路径(比如
/foo
)时,它最终会被
Express
转换为一个正则表达式。
某些正则表达式元字符是可以用在路由路径中的,比如
+
、
?
、
\*
、
(
和
)
。下面来看几个
例子。比如说你希望
/user
和
/username
这两个
URL
可以用同一个路由来处理:
app.get('/user(name)?', (req, res) => res.render('user'))
我最喜欢的一个新奇网站的网址为
http://khaaan.com
(很遗憾现在已经不存在了)。网站上
面只是大家都喜欢的星际飞船船长喊着他最具标志性的台词。虽然没什么用,但每次都会
让我发笑。假设我们想做出自己的“
KHAAAAAAAAN
”页
,但不希望用户必须记住究竟
是
2
个
a
、
3
个
a
还是
10
个
a
。下面的代码就可以做到:
app.get('/khaa+n', (req, res) => res.render('khaaan'))
然而,在路由路径中,并非所有的正则表达式元字符都有意义— ...