文章目录
一、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') // 重新定位
总结
提示:未完待续