egg-ecarx-interface
Install
$ npm i egg-ecarx-interface --save
Usage
exports.interface = {
enable: true,
package: 'egg-ecarx-interface',
};
module.exports = app => {
app.status = app.config.interface
};
Configuration
exports.interface = {
locale: true,
success: true,
codeField: 'code',
messageField: 'message',
defaultSuccess: 'success', 默认成功的status
defaultFail: 'fail',
status: {
success: {
success: true,
code: 200,
message: 'success',
},
fail: {
success: false,
code: 400,
message: 'fail',
},
not_found: {
success: false,
code: 404,
message: '%s not found',
},
invalid_param: {
success: false,
code: 422,
message: 'params error %s',
},
server_error: {
success: false,
code: 500,
message: 'server error %s',
}
}
};
Use
@method ctx.success(data, message)
@args
- data 返回值里里的data
- message 成功输出语句, 默认'success'
@example
ctx.success()
ctx.success({msg: '成功内容对象'})
ctx.success({msg: '成功内容对象'}, '成功提示语句')
{
"success": true,
"code": 200,
"message": "成功语句",
"data": {
"msg": "成功内容对象"
}
}
@method ctx.fail(status, data, ...message)
@args
- status 错误对象,默认 app.status.fail
- data 返回值里里的data, 如果data是string, 会被当做是message, 请分装成 obj/array
- ...message 错误输出语句, 和 status的message进行合并处理,合并规则如下
如果 status 的 message 是非字符串模板,则会进行替换message,如 ctx.fail(app.status.fail, '操作错误') => 'fail' + "操作错误' => '操作错误'
如果 status 的 message 是字符串模板,则会进行模板拼接,如 ctx.fail(app.status.not_found, '某数据') => '%s not found' + "某数据' => '某数据 not found'
@example
ctx.fail(app.status.fail, '错误message')
ctx.fail(app.status.fail, {msg: '错误内容对象'})
ctx.fail(app.status.fail, {msg: '错误内容对象'}, '错误message')
//如果是不是字符串模板
app.status.notmuban = {code:1001, message: 'muban muban'}
ctx.fail(app.status.notmuban, '错误message') => "错误message"
//如果是字符串模板
app.status.muban = {code:1001, message: 'muban %s muban'}
ctx.fail(app.status.muban, '错误message') => "muban 错误message muban"
//如果 locale=true 需要国际化
app.status.muban = {code:1001, message: 'muban %s muban'}
国际化配置 zh-CN.js 里 'muban %s muban': '模板 %s 模板'
ctx.fail(app.status.muban, '错误message') => "模板 错误message 模板"
国际化
如果 locale: true 开启了国际化,用户的 message 和 status里的 message 都会先 国际化后,再进行拼接,比如上面的例子
//如果目标语言是 zh-CN
//zh-CN.js
module.exports = {
'fail': '失败',
'%s not found': '%s不存在'
};
ctx.fail(app.status.not_found, '某数据') => '%s not found' + "某数据' => 国际化 => '%s不存在' + "某数据' =>'某数据不存在'