导入
控制器
了解控制器是什么以及如何创建它们。
控制器 是处理应用逻辑的文件,通常与模型、视图、助手等组件相关联。控制器用于响应 HTTP 请求,不应被其他文件引入。为了保持代码整洁,应尽量将控制器逻辑拆分到独立的文件中,避免控制器代码过于臃肿。
创建控制器
No configuration found for ID: 6aae8d589f17b116b8694e220c2a8bb51c1fab2100c2b7c5a96364193a45b925
点击运行,等待输出显示在“输出”标签页中。你将看到消息:“Hello from controller。”
说明
在 app/Controllers/Http/TestController.js 文件中,我们定义了一个名为 hello() 的函数。由于控制器只能通过路由访问,因此我们在 start/routes.js 文件的第 20 行调用了该控制器。TestController 是控制器的名称,hello 是控制器内部的方法名。
...
在 start/routes.js 中访问控制器
HTTP 上下文
当 HTTP 请求到达路由器时,Adonis 会创建一个 HTTP 上下文对象,其中包含与请求相关的数据。我们可以在路由、控制器和中间件中使用这个上下文对象。以下代码片段展示了如何在控制器中访问 HTTP 上下文:
1class TestController { 2 hello(ctx){ 3 console.log(ctx.request) 4 console.log(ctx.response) 5 } 6}
下面的代码使用了 ES6 解构语法,效果与上面相同:
1class TestController { 2 // 使用 ES6 解构 3 hello({ request, response }){ 4 console.log(request) 5 console.log(response) 6 } 7}
注意:我们可以从 HTTP 上下文中提取多个对象,如 request、response、auth、view、session、params 等。这些对象将在后续课程中逐一学习。