Controller控制器
https://eggjs.org/zh-cn/basics/controller.html

Controller功能

  1. 接收参数
  2. 校验参数是否合法
  3. 向下调用 Service服务,处理业务逻辑
  4. ctx.body响应客户端数据

异步方法

Controller里面的方法都是异步的

/app/controller/home.js

  1. 'use strict';
  2. const { Controller } = require('egg');
  3. class HomeController extends Controller {
  4. async index() {
  5. const { ctx } = this;
  6. // ctx.body = 'hi, 启动项目成功';
  7. const res = await ctx.service.sku.index();
  8. // ctx.body = res;
  9. // 必须要加 await,否则路由 404
  10. await ctx.render('index.html', res);
  11. }
  12. }
  13. module.exports = HomeController;

获取config配置参数

Controller里面,要获取 config.default.js里面的配置,直接使用 this.config

app ctx service config logger helper
Controller this.app this.ctx this.service this.config this.logger this.app.helper
Service

Service里面调用远程API,await this.ctx.curl(url, {})

  1. 'use strict';
  2. const { Controller } = require('egg');
  3. class HomeController extends Controller {
  4. async index() {
  5. const { ctx } = this;
  6. const res = await ctx.service.sku.index();
  7. // const res = await ctx.curl(url, {})
  8. // ctx.body = res;
  9. // 必须要加 await,否则路由 404
  10. await ctx.render('index.html', res);
  11. }
  12. }
  13. module.exports = HomeController;