运维开发网

3. koa-router

运维开发网 https://www.qedev.com 2020-07-25 11:19 出处:网络 作者:运维开发网整理
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. 引入路由 cons

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

精彩评论

暂无评论...
验证码 换一张
取 消