eggsyllabusframework初步使用
1.安装框架
先安装egg模板,并且安装依赖
$ npm i egg-init -g
$ egg-init <文件夹名字> --type=simple
$ cd <文件夹名字>
$ npm i
安装egg模板后,安装eggsyllabusframework框架
$ npm install egg-syllabus-framework --save
接下来要把eggsyllabusframework框架配置到package.json中
{
"egg":{
"framework":"egg-syllabus-framework"
}
}
然后可以启动框架,在命令行中输入
npm run dev
打开http://127.0.0.1:7001即可看到相应框架
2.框架结构
跟egg目录是差不多的
3.日志
日志的格式
LOG_TIME LOG_TYPE PID [ACCOUNT/IP/REQ_ID/METHOD/USE_TIME/URL] CONTENT
我们干了什么,输出什么都可以从这里看得到;
REACH_TIME日志打印时间LOG_TYPE日志类型,日志分为NONE,DEBUG,INFO,WARN和ERROR5个级别,只会默认输出INFO及以上(WARN和ERROR)的日志到文件中PID进度的pid,框架为多进度启动,可以查看输出日志的进度,一般情况下比较少用ACCOUNT用户校园账号,只有需要校准登录态的请求,先前才会有值IP客户端ip地址REQ_ID请求的唯一idMETHOD请求方法USE_TIME直到日志打印的时刻,请求所花费的时间URL请求的网址CONTENT日志内容
如果其中一项为空,为显示为 -
出入记录
记录以下信息:
- 请求的参数
- 响应内容和响应时间
该功能由request和reponse中间件实现
请求ID
唯一的请求ID,以区分日志文件中不同的请求所输出的日志
该功能由traceld实现
方法记录
当Controller,Service的方法被调用时,会进行输出:
Call Controller: OauthController -> stuLogin
Call Service: OauthService -> _updateStuToken
我们可以看到这些是页面的跳转,从中可以知道从哪个页面跳转到另外哪个页面处,但是中间怎么跳转我们并不清楚
经过的中间件互连不会打印日志,需要手动写日志
页面日志
通过ctx.render返回的页面会有以下的响应格式
Response <请求耗时>: render page <页面名称> data: <页面数据>
4.错误码
错误码可以定义为一组数字(或字母与数字的结合),它会与错误讯息建立关联,用于识别在系统中出现的各种异常情况
错误码格式:
- 1-2位-代表发生错误的后台,在线上服务中,我们的后台服务可能不止一个
- 3-8位-具体业务错误码
- 3-3位-1代表错误发生在Controller,2代表错误发生在service,3代表错误发生在中间件,4代表错误发生在helper
- 4-6位-代表具体的控制器/服务/中间件
- 7-8位-具体的业务错误码
封装方法
我们在我们可以进行封装一个方法ctx.helper.createError(),用来生成带有错误码信息的错误对象
/**
* 创建一个带有错误码的Error对象
* @param msg 错误信息
* @param code 3-8位错误码
* @param arg_props 其他混入到Error对象的属性
* @returns {Error} 返回带错误码的Error对象
*/
createError(msg, code, arg_props) {}
通过throw ctx.helper.createError('error message', your_error_code )进行使用
配置
全局配置
// config/config.default.js
module.exports = {
errCode: {
APP_ERROR_CODE: '01', // 应用错误码,错误码1-2位,其他为3-6位
NOT_REGISTER_ERROR: '0000', // 未登记默认错误码
}
}
错误码文件配置
// config/errCode.js
const errCode = {
testController: {
code: '1001', // 3-6位
error1: '01', // 7-8位
error2: '02', // 7-8位
},
}
module.exports = errCode
给客户端返回错误信息
// config/config.default.js
module.exports = {
errCatch: {
responseErrorMsg: true
}
}
5.前端代理请求
/ config/config.default.js
config.socketRequest = {
url: 'http://localhost:7003/socket-proxy'
}
请求函数
/**
* @param options
* @param options.url
* @param options.data
* @param options.header
* @param options.method
* @param options.dataType
* @param options.needProxy
* @returns {Promise<*>}
*/
async request(options) {}