3. koa-router
1. 路由是什么?
在koa中, 路由的本质也是一个中间件
路由决定了不同URL是如何被不同执行的
2. koa-router
在koa中, 我们使用koa-router实现路由
1. 安装koa-router
npm i koa-router --save
2. 使用koa-router
const Koa = require('koa')
//1. 引入路由
const Router = require('koa-router')
const app = new Koa()
//2. 实例化路由
const router = new Router()
/*
3. 实现路由
实例化出一个router后, 跟上请求方法(get、post ...)
方法内部写上路由路径, 然后写上内容,可以是函数也可以是中间件
*/
router.get('/', (ctx) => {
ctx.body = "这是主页"
})
router.get('/users', (ctx) => {
ctx.body = "这是用户列表"
})
router.post('/users', (ctx) => {
ctx.body = "创建用户"
})
/*
get请求中携带参数,使用 :参数名 的方式
获取请求携带的参数, 使用 ctx.params.参数名
*/
router.get('/users/:id', (ctx) => {
ctx.body = `这是用户列表${ctx.params.id}` //这是用户列表hao
})
//注册路由
app.use(router.routes())
app.listen(3002)
知识点: 获取get请求头携带参数可以通过 ctx.params.参数名 获取到
3. 路由高级知识
1. 路由前缀
在上面的代码中, 我们的路由有两个部分。一个是‘/’, 另一部分是 ‘/users' 。为了简化代码和方便操作, 我们可给路由添加前缀
以下是添加上方添加前缀后的代码:
const Koa = require('koa')
const Router = require('koa-router')
const app = new Koa()
const router = new Router()
//路由前缀
const usersRouter = new Router({prefix: '/users'})
router.get('/', (ctx) => {
ctx.body = "这是主页"
})
//使用了路由前缀,我们就可以用usersRouter 替换 所有带有/users的router
usersRouter.get('/', (ctx) => {
ctx.body = "这是用户列表"
})
usersRouter.post('/', (ctx) => {
ctx.body = "创建用户"
})
usersRouter.get('/:id', (ctx) => {
ctx.body = `这是用户列表${ctx.params.id}`
})
//注意! 我们新加了一个前缀路由, 不要忘记注册
app.use(router.routes())
app.use(usersRouter.routes())
app.listen(3002)
总结:1 .通过在实例化路由中添加{prefix : ' 路径名 '}的方式来添加前缀
2 实例化新的路由后, 不要忘记注册
2. 多中间件路由
在路由中, 我们可以添加多个中间件来实现路由的功能。
多中间件路由常用于用户登录、权限认证
比如说在上述的创建用户路由, 我们假定必须登陆有才能执行此操作, 我们就可以在路由中添加一个登录验证的中间件。
//假定auth是验证用户登陆的中间件 usersRouter.post('/', auth, (ctx) => { ctx.body = "创建用户" })

浙公网安备 33010602011771号