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 = "创建用户" })