小提示:express 使用了 path-to-regexp 模块实现的路由匹配。
- req.query: 解析后的 url 中的 querystring,如 ?name=haha,req.query 的值为 {name: ‘haha’}
- req.params: 解析 url 中的占位符,如 /:name,访问 /haha,req.params 的值为 {name: ‘haha’}
- req.body: 解析后请求体,需使用相关的模块,如 body-parser,请求体为 {“name”: “haha”},则 req.body 为 {name: ‘haha’}
上面只是很简单的路由使用的例子(将所有路由控制函数都放到了 index.js),但在实际开发中通常有几十甚至上百的路由,都写在 index.js 既臃肿又不好维护,这时可以使用 express.Router 实现更优雅的路由解决方案。在 myblog 目录下创建空文件夹 routes,在 routes 目录下创建 index.js 和 users.js。最后代码如下:
index.js
const express = require('express')
const app = express()
const indexRouter = require('./routes/index')
const userRouter = require('./routes/users')
app.use('/', indexRouter)
app.use('/users', userRouter)
app.listen(3000)
routes/index.js
const express = require('express')
const router = express.Router()
router.get('/', function (req, res) {
res.send('hello, express')
})
module.exports = router
routes/users.js
const express = require('express')
const router = express.Router()
router.get('/:name', function (req, res) {
res.send('hello, ' + req.params.name)
})
module.exports = router