express学习
AprilTong 4/2/2024 Node
# 路由
使用与 HTTP 方法相对应的express app对象方法来定义路由。
// 根目录的GET方法路由示例
const express = require('express')
const app = express()
app.get('/', (req, res) => {
res.send('hello world')
})
1
2
3
4
5
6
2
3
4
5
6
app.all()用于在所有 HTTP 请求方法的路径上加载中间件函数,如下所示:都会对路由 “/secret” 的请求执行以下处理程序。
app.all('/secret', (req, res, next) => {
console.log('Accessing the secret section ...')
next()
})
1
2
3
4
2
3
4
路由参数,用于捕获在 URL 位置中指定的值,捕获的值填充到 req.params 对象中。
app.get('/users/:userId/books/:bookId', (req, res) => {
// 如果请求的URL是http://localhost:3000/users/34/books/8989
// 则req.params: { "userId": "34", "bookId": "8989" }
res.send(req.params)
})
1
2
3
4
5
2
3
4
5
# 中间件
- 应用级中间件
- 使用 app.use()和 app.METHOD()方法来加载中间件,其中 METHOD 是 HTTP 请求方法。
- 要跳过剩余的中间件函数,调用 next('route')将控制传递给下一个路由。
- 中间件也可以在数组中声明实现可重用性。
function logOriginalUrl(req, res, next) {
console.log(req.originalUrl)
next()
}
function logMethod(req, res, next) {
console.log(req.method)
next()
}
const logStuff = [logOriginalUrl, logMethod]
app.get('/user/:id', logStuff, (req, res) => {
res.send('userInfo')
}
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12