乐趣区

关于前端:浅析Koa2中控制器

控制器

什么是控制器

拿到路由调配的工作,并执行

路由的性能是依据不同的 url, 来调配不同的工作。

控制器是拿到路由调配的工作并执行,是注册在路由中的中间件。

所以在 koa 中, 控制器也是一个中间件。

为什么要应用控制器

  • 获取 HTTP 申请参数
  • 解决业务逻辑

获取 HTTP 申请参数

  • Query String,如 ?kw=html
  • Router Params,如 /users/:id
  • Body,如 {name:“李雷”}
  • Header,如 Accept、Cookie

发送 HTTP 响应

  • 发送 Status,如 200/400 等
  • 发送 Body,这里是返回内容, 如{name:”test”},restfulapi 里返回的经常是 json, 然而传统 web 开发也会返回 html
  • 发送 Header,如 Allow(代表容许的 HTTP 办法)、Content-Type(通知客户端返回的格局利用哪种形式解析, restful api 外面经常是 json)

编写控制器最佳实际

  • 每个资源的控制器放在不同的文件里
  • 尽量应用类 + 类办法的模式编写控制器
  • 谨严的错误处理

更多精彩内容,请 微信搜寻“前端爱好者 戳我 查看

编写控制器

创立 app->controllers 文件夹 寄存控制器。

控制器实质是中间件,中间件实质是函数,为了更正当组织这些控制器,最好采纳类 + 类办法的模式进行编写。

用户控制器 users.js为例


// 用户控制器 users.js
const db = [{name: "test"}]

class UsersCtl {
    // 获取用户列表
    find(ctx) {ctx.body = db;}

    // 获取特定用户
    findById(ctx) {ctx.body = db[ctx.params.id1];
    }

    // 创立用户
    create(ctx) {db.push(ctx.request.body);
        ctx.body = ctx.request.body;
    }

    // 更新用户
    update(ctx) {db[ctx.params.id1] = ctx.request.body;
        ctx.body = ctx.request.body;
    }
    
    // 删除用户
    delete(ctx) {db.splice(ctx.params.id * 1, 1);
        ctx.status = 204
    }
}

// 导出实例化的控制器
module.exports = new UsersCtl();
退出移动版