控制器
什么是控制器
拿到路由分配的任务,并执行
路由的功能是根据不同的 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();