一、Express路由

路由是指确定应用程序如何响应客户端对特定端点的请求,该特定端点是URI(或路径)和特定的HTTP请求方法。它包含一个请求方法、路径、和回调函数

app.methods(path, callback)

二、Express路由方法

Express方法来源于 HTTP方法之一,附加在express类的实例,

有:getpostputdelete

app.get('/', function (req, res) {
  res.send('Hello World!')
})

app.post('/', function (req, res) {
  res.send('Got a POST request')
})

app.put('/user', function (req, res) {
  res.send('Got a PUT request at /user')
})

app.delete('/user', function (req, res) {
  res.send('Got a DELETE request at /user')
})

三、路径

Express路径包括三种表达形式,分别为

字符串字符串模式正则表达式

3.1、字符串路径

  • 此地址将与 /login匹配
app.get('/login', function(req, res, next) {
  res.render('login', { title: '登录' });
});

3.2、字符串模式路径

类字符串的正则模式,使用的是正则的规则

  • 此路由将会匹配 /abcd/acd
//? 问号代表前面的字符最多只可以出现一次(0次、或1次)。
// 所以是 /acd 或 abcd
app.get('/ab?cd', (req,res) => {
  res.send("类字符串的正则模式")
})
  • 此路由将会匹配 /abcd/abbcd/abbbcd
//+ 号代表前面的字符必须至少出现一次(1次或多次)
// 所以是 /abcd 或 /abbcd 或 abbbcd
app.get('/ab+cd', (req,res) => {
  res.send("类字符串的正则模式")
})
  • 此路由将会匹配 /abcd/ab123cd
//* 号代表,必须以前面字符开头,后面字符结尾,中间任意
// 所以是 /abcd 或 /ab123cd 
app.get('/ab*cd', (req,res) => {
  res.send("类字符串的正则模式")
})

3.3、正则表达式路径

  • 此路由将会匹配 其中带有 a的任意内容
app.get(/a/, (req,res) => {
  res.send("正则表达式路径")
})
  • 此路由将会匹配 以a开头,后面数字最少10位的路径
  • http://127.0.0.1:8080/a1234567890
app.get(/\/a\d{10,}/, (req, res) => {
  res.send("新闻页面")
})

四、动态路由

4.1、介绍

路由参数命名为 URL 段,用于捕获 URL 在其位置处指定的值。捕获的值填充到 req.params 中,并将路径中指定的 route 参数作为其各自的键

如:

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

4.2、使用

只需在路由路径中指定路由参数:

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

五、路线处理程序

同一个路由,可以有多个回调函数,层层处理,需要有一个 next

app.get('/users/:userId/books/:bookId', (req, res, next) => {
  console.log(req.params)
    
  next()  // 执行下一个回调函数
    
}, (req, res) => {
  res.send(req.params)
})

六、res 响应对象的方法

res响应对象上的方法可以响应发送到客户端,并终止请求-响应周期

方法

描述

res.download()

提示要下载的文件

res.end()

结束响应过程

res.json()

发送JSON响应

res.jsonp()

发送带有JSONP支持的JSON响应

res.redirect()

重定向请求

res.render()

渲染视图模板

res.send()

发送各种类型的响应

res.sendFile()

将文件作为八位字节发送

res.sendStatus()

设置响应状态码,并将其字符串表示形式发送为响应正文