• 5. 控制器


    1. 控制器的作用

     1. 处理HTTP请求

     2. 处理业务逻辑

     3. 发送HTTP响应

     

    2. 编写控制器的最佳实践

     每个资源的控制器放在不同的文件里

     最好使用类+类方法的形式编写控制器

     严谨的错误处理

    3. 获取Http请求参数

     1. 获取body中的参数

      koa默认是不支持查看body中的参数, 所以我们需要安装koa-bodyparser中间件来解析body请求体

      npm i koa-bodyparser --save

      之后, 我们便可以获取body参数

      ctx.request.body

      2.  获取header

        ctx.request.header

      3.   获取query

       (/users/zhanghao?age=12)  query为?后面的内容

       ctx.query

      4. 获取路由参数(router params)

       /users/zhanghao zhanghao为路由参数

       ctx.params

    4.   发送HTTP响应

       1. 设置status

         ctx.status = 204

      2. 设置body

        ctx.body = '' "

    5 模拟数据库重构增删改查代码

       在这里, 我们设置一个常量db模拟数据库

    const Koa = require('koa')
    const Router = require('koa-router')
    const body = require('koa-bodyparser')
    
    const app = new Koa()
    const router = new Router()
    //y路由前缀
    const usersRouter = new Router({prefix: '/users'})
    app.use(body())
    
    //模拟数据库
    const db = [
      {name : "李雷"},
      {name : "朱丑"}
    ]
    
    router.get('/', (ctx) => {
      ctx.body = "这是主页"
    })
    
    usersRouter.get('/', (ctx) => {
      ctx.body = db
    })
    
    usersRouter.post('/', (ctx) => {
      //向db中添加元素
      db.push(ctx.request.body)
      ctx.body = ctx.request.body
    })
    
    usersRouter.get('/:id', (ctx) => {
      //这里默认id是数组的索引
      ctx.body = db[ctx.params.id]
    })
    
    usersRouter.delete('/:id', (ctx) => {
      //从第id项删除, 删除一项
      db.splice(ctx.params.id, 1)
      ctx.status = 204
    })
    
    usersRouter.put('/:id', (ctx) => {
      db[ctx.params.id] = ctx.request.body
      ctx.body = ctx.request.body
    })
    
    app.use(router.routes())
    app.use(usersRouter.routes())
    
    app.listen(3003)

      注意: 使用koa-bodyparser的方法,需要加()

      

     

      

  • 相关阅读:
    1703技术笔录
    技术开发感想
    1701技术随笔
    12月份技术随笔
    光照效果函数
    冰冻效果
    反色效果函数
    哈哈镜效果
    黑白效果函数
    羽化效果
  • 原文地址:https://www.cnblogs.com/zhanghaoblog/p/11706318.html
Copyright © 2020-2023  润新知