关于前端:浅析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();

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理