egg框架学习文档(备忘录)

一、egg 安装启动

npm init egg --type=simple
npm i
npm run dev

二、HTTP常用的四种请求方式(router)

1.GET ===> 获取数据。

2.POST ===> 提交数据。

3.PUT ===> 修改数据。

4.DELETE ===> 删除数据。

三、controller层里面的常用语法

1.koa如何获取get传值

获取get传值使用this.ctx.query

    // 获取get传值
    // koa 如何获取get传值 ctx.query
    // 路由 router.get('/newscontent', controller.news.content)
    // 格式 http://127.0.0.1:7001/newscontent?aid=123&id=15
    console.log(this.ctx.query);
    // 输出数据 { aid: '123', id: '15' }

2.koa获取动态路由

获取动态路由 this.ctx.params

    // koa 获取动态路由 ctx.params
    // 路由router.get('/newslist/:id', controller.news.newsList);
    // 链接 http://127.0.0.1:7001/newslist/15
    console.log(this.ctx.params)
    // 值 {"id":"15"}

代码如下(示例):

3.csrf防范机制解决办法

1.使用密钥

    // controller
    await this.ctx.render('login', {
      csrf: this.ctx.csrf,
    });
    // view
    <body>
    <form action = "/add"  method = "POST">
        <input type = "hidden" name="_csrf" value="<%=csrf%>">
        用户名:<input type ="text" name="username"/><br><br>
        密码:<input type ="text" name="password" /><br><br>
        <button type="submit" >提交</button>
    </form> 
    </body>

2.关闭防范机制

// config.default.js
config.security = {
    csrf: {
      enable: false,
    },
  };

4.扩展工具在controller里面调用规则

1.app/extend/application.js

    // application 里面的扩展调用 用的是 this.app.foo()
    this.app.foo(); // foo() 是函数

2.app/extend/content.js

    // context 里面的扩展调用 用的是 this.ctx.gethost()
    console.log(this.ctx.gethost()); // gethost() 函数

3.app/extend/helper.js

    // helper 里面的扩展调用 用的是 this.ctx.helper.getHelperDate()
    console.log(this.ctx.helper.getHelperDate());

4.app/extend/request.js

    // request 里面的扩展调用 用的是 this.ctx.request.foo()
    console.log(this.ctx.request.foo());

四、服务(service)

主要用于复杂的业务处理。

五、middleware

1、配置

app/config/config.default.js

  // add your middleware config here
  config.middleware = [  'forbid' ];
  // middleware 中 需要添加配置, 采用文件名称加对象的形式
  config.forbid = {
    forbidip: [ '127.0.0.1' ],
  };

app/middleware/forbid.js

module.exports = options => {
  return async function forbidip(ctx, next) {
    console.log(ctx.request.ip);
    console.log('options', options.forbidip);
    // some语法
    // forbidip.some(function(value) {
    //   console.log(value);
    // });
    if (ctx.request.ip === '127.0.0.1') {
      ctx.status = 403;
      ctx.body = 'ip禁用';
    } else {
      return next();
    }

  };
};

2、参数解释

/*
options: 中间件的配置项,框架会将 app.config[${middlewareName}] 传递进来。
app: 当前应用 Application 的实例。
*/
/*
router 发送请求,首先会进入到middleware
next() 会继续执行, 否则会报404

*/

六、设置cookie

    // 设置cookie
    /*
    第一个参数 cookies的名称
    第二个参数 cookies的值
    第三个参数 配置
    默认前两个参数即可
    默认情况下cookies 当浏览器关闭的时候就销毁
    */
    this.ctx.cookies.set('name','xiaominghui',{
      maxAge:1000*3600*24, // cookie存储一天
      httpOnly:true,
      signed:true,        // 对cookie进行签名 防止用户修改cookie
      encrypt:true,       // 是否对cookie进行加密 对cookie进行加密够可以设置中文cookie
    });
    // 获取cookies
    // this.ctx.cookies.get('name);
    // 清除cookie
    // this.ctx.cookies.set('name',null);
    // this.ctx.redirect('/login') // 重新定位

总结

提示:未完待续

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值