EggBornJS对后端API路由
的返回结果进行了统一规范,对ctx
对象注入了以下方法:
名称 | 说明 |
---|---|
ctx.success | 返回成功数据 |
ctx.successMore | 返回成功数据,支持列表分页 |
ctx.fail | 返回错误信息 |
ctx.throw | 抛出异常 |
ctx.success
向前端返回成功数据,一般在Controller
中调用
- 1const res = 'done';
- 2this.ctx.success(res);
前端返回结果如下:
- 1{
- 2 "code": 0,
- 3 "message": "成功",
- 4 "data": "done"
- 5}
ctx.successMore
当向前端返回列表时,传递与分页相关的信息,一般在Controller
中调用
比如,需要读取第1页数据,每页10条:
- 1const page = { index: 0, size: 10 };
- 2const items = [
- 3 { id: 1, name: 'name1' },
- 4 { id: 2, name: 'name2' }
- 5];
- 6this.ctx.successMore(items, page.index, page.size);
前端返回结果如下:
- 1{
- 2 "code": 0,
- 3 "message": "成功",
- 4 "data": {
- 5 "list": [
- 6 {
- 7 "id": 1,
- 8 "name": "name1"
- 9 },
- 10 {
- 11 "id": 2,
- 12 "name": "name2"
- 13 }
- 14 ],
- 15 "index": 2,
- 16 "finished": true
- 17 }
- 18}
名称 | 说明 |
---|---|
data.list | 返回的列表数据 |
data.index | 列表偏移量,用于读取下一页 数据 |
data.finished | 标识列表数据是否已经读取完毕,如果读取完毕就不再读取下一页 数据 |
ctx.fail
向前端返回错误信息,一般在Controller
中调用
声明错误代码
EggBornJS兼容HTTP协议约定的错误代码,如403: Forbidden
、404: Not Found
,此外还可以自定义错误代码
及相应的错误信息
src/suite-vendor/test-party/modules/test-party/backend/src/config/errors.js
- 1// error code should start from 1001
- 2module.exports = {
- 3 1001: 'Error Test',
- 4};
错误信息
还支持国际化
,只需要添加相应的语言资源
即可
src/suite-vendor/test-party/modules/test-party/backend/src/config/locale/zh-cn.js
- 1module.exports = {
- 2 'Error Test': '错误测试',
- 3};
返回错误信息
本模块内部使用
返回本模块内部声明的错误信息如下:
- 1this.ctx.fail(1001);
跨模块使用
返回其他模块声明的错误信息如下:
- 1this.ctx.fail.module('test-party',1001);
前端返回结果
- 1{
- 2 "code": 1001,
- 3 "message": "错误测试"
- 4}
ctx.throw
抛出异常,并向前端返回错误信息
声明错误代码
同ctx.fail
返回错误信息
本模块内部使用
抛出本模块内部声明的错误信息如下:
- 1this.ctx.throw(1001);
跨模块使用
抛出其他模块声明的错误信息如下:
- 1this.ctx.throw.module('test-party',1001);
前端返回结果
- 1{
- 2 "code": 1001,
- 3 "message": "错误测试",
- 4 "stack": "Error: 错误测试\n at ErrorClass.throw ...",
- 5 "name": "Error",
- 6 "status": 500
- 7}
评论: