共计 948 个字符,预计需要花费 3 分钟才能阅读完成。
控制器
什么是控制器
拿到路由调配的工作,并执行
路由的性能是依据不同的 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();
正文完