• 3. koarouter


    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 = "创建用户"
    })
  • 相关阅读:
    在线漏洞检测网站
    渗透测试工具库
    端口利用解析
    Linux安全脚本
    Linux常见系统故障
    Oracle
    Redis和MongoDB区别
    MHA在监控和故障转移时都做了什么
    Oracle 11g Dataguard参数详解
    Oracle
  • 原文地址:https://www.cnblogs.com/zhanghaoblog/p/11704599.html
Copyright © 2020-2023  润新知