egg框架使用方法
1.项目初始化
附上egg官方链接点击进入egg官网
(1).创建项目(打开cmd,进入想要创建项目的路径)
mkdir egg-example //egg-example为项目名称
cd egg-example //进入项目路径
npm init egg --type=simple //初始化项目
npm i //下载所需的插件
(2)启动项目
npm run dev //启动项目
项目启动成功后会在显示启动成功后的端口号,浏览器输入 127.0.0.1:7001 就会显示默认页面
2.开发第一个api
找到项目目录里的app==》controller==》home.js(项目初始时的示例)
(1)创建一个api
egg内置对象传送门
async list() { //list为api功能的名称
const { ctx } = this; //ctx 为egg的内置对象
ctx.body = {
msg: 'ok',
data: [
{id: '1',name: '列表1'},
{id: '2',name: '列表2'},
]
} //body方法是所返回的相应内容
}
(2)添加路由
接口开发完成以后,想要访问该api,必须要通过路由绑定相应的功能模块
router.get('/list', controller.home.list); //新建一个get方式的路由,浏览器访问 127.0.0.1:7001/list 就会出现{msg: 'ok',data: [{id: '1',name: '列表1'},{id: '2',name: '列表2'}] }
(3)获取参数
Query String 方式
ctx.body = ctx.query.id //获取url?后面的参数 1234
//127.0.0.1:7001/list?id=1234
参数命名方式
// app/router.js
module.exports = app => {
app.router.get('/list/:id/', app.controller.home.list);
};
// app/controller/home.js
ctx.body = ctx.params.id //获取url/后面的参数 1234
//127.0.0.1:7001/list/id=1234
表单内容的获取
// app/router.js
module.exports = app => {
app.router.post('/form', app.controller.form.post);
};
// app/controller/form.js
exports.post = async ctx => {
ctx.body = `body: ${JSON.stringify(ctx.request.body)}`;
}; //使用这种方式进行获取api请求,会发生报错,报错原因见下图
解决的方发请查看 3.解除 安全威胁csrf的防范 4.跨域
(4).更改状态码
ctx.status = 201;
3.解除 安全威胁csrf的防范
使用post方法接收参数会被csrf所拦截,所以在写post接口时,要将这个功能关闭
打开 config==》config.default.js, 在里面添加一段代码
config.security = {
xframe: {
enable: false,
},
csrf: {
enable: false
},
domainWhiteList: ['*']
};
4.跨域
egg中解决跨域需要下载一个插件
1.安装egg-cors
npm install egg-cors --save
2.打开config/plugin.js 在module.exports中添加代码
cors: {
enable: true,
package: 'egg-cors'
}
3.在config/config.default.js
config.security = {
csrf: {
enable: false
},
domainWhiteList: [ '*' ]
};
config.cors = {
origin: '*',
allowMethods: 'GET,HEAD,PUT,POST,DELETE,PATCH,OPTIONS'
};