express路由模式

1.字符串模式路由路径

1.1“?” 匹配前面字符或子字符串0或1次

//可以访问acd,abcd

app.get('/ab?cd',(req,res)=>{
    res.send('Hello')
})

1.2 “+” 匹配前面字符或子字符串1或多次 

//可以访问abcd,aabcd,等等
app.get('/a+bcd',(req,res)=>{
    res.send('Hello')
})

1.3 “*” 匹配任意多字符(包括空字符) 

//此路径将匹配 abcd、 abxcd、 abRANDOMcd、 ab123cd 等

app.get('/ab*cd',(req,res)=>{
    res.send('Hello')
})

1.4 “()” 子字符串

"()" 的用处把如 ? 和 + 等匹配规则应用到一些字符上

//路径将匹配/abe 和/abcde
app.get('/ab(cd)?e',(req,res)=>{
    res.send('Hello')
})

1.5 正则表达式匹配 

基于正则表达式的路由路径示例:这条路径将匹配任何带有“ a”的路径。

app.get(/a/,(req,res)=>{
    res.send('Hello')
})

2 路由参数匹配路由路径

2.1基本匹配

路由参数名称只能由 [A-Za-z0-9_] 组成

<----  Route path: /users/:userId/books/:bookId
Request URL: http://localhost:3000/users/34/books/8989
req.params: { "userId": "34", "bookId": "8989" } ---->

app.get('/users/:userId/books/:bookId', function (req, res) {
    res.send(req.params)
})

2.2 “-” 与 “.” 分割路由参数 

<---  Route path: /flights/:from-:to
Request URL: http://localhost:3000/flights/LAX-SFO
req.params: { "from": "LAX", "to": "SFO" } --->

<---  Route path: /plantae/:genus.:species
Request URL: http://localhost:3000/plantae/Prunus.persica
req.params: { "genus": "Prunus", "species": "persica" } --->

2.3使用正则表达式 

  • 在 Express 4.x 中,正则表达式中的 * 字符不会按照通常的方式进行解释。作为解决方案,请使用{0,}代替 * 。这个问题很可能在 Express 5中得到解决。
<--- Route path: /user/:userId(\d+)
Request URL: http://localhost:3000/user/42
req.params: {"userId": "42"} --->

3.路由函数 

var cb0 = function (req, res, next) {
    console.log('CB0')
    next()
  }
  
  var cb1 = function (req, res, next) {
    console.log('CB1')
    next()
  }
  
  var cb2 = function (req, res) {
    res.send('Hello from C!')
  }
  
  app.get('/example/c', [cb0, cb1, cb2])

你可能感兴趣的:(node,前端,服务器,javascript)