前言
在如今应用中,经常会涉及 server 和client 交互,不管是RPC或HTTP的请求,接口返回结果保持统一是大有可为的,这将大大降低了调用方(client)的开发成本。
如何在express 中设计统一返回结果呢?
编码思想
设计一个对象,用此来固定返回结构。
编码
设计一个符合业务规范的数据返回对象
参数 | 说明 |
---|---|
code | 返回码 |
msg | 消息体 |
data | 数据内容 |
time | 返回时间 |
以下是用code说话时间
编码: 统一返回对象
const BizResultCode = require('./BaseResultCode');
/**
* @author ycx
* @description 统一返回结果
*/
class BizResult {
/**
* 返回code
*/
code;
/**
* 返回消息
*/
msg;
/**
* 返回数据
*/
data;
/**
* 返回时间
*/
time;
/**
*
* @param code {number} 返回code
* @param msg {string} 返回消息
* @param data {any} 返回具体对象
*/
constructor(code, msg, data) {
this.code = code;
this.msg = msg;
this.data = data;
this.time = Date.now();
}
/**
* 成功
* @param data {any} 返回对象
* @return {BizResult}
*/
static success(data) {
return new BizResult(BizResultCode.SUCCESS.code, BizResultCode.SUCCESS.desc, data);
}
/**
* 失败
*/
static fail(errData) {
return new BizResult(BizResultCode.FAILED.code, BizResultCode.FAILED.desc, errData);
}
/**
* 参数校验失败
*/
static validateFailed(param) {
return new BizResult(BizResultCode.VALIDATE_FAILED.code, BizResultCode.VALIDATE_FAILED.desc, param);
}
/**
* 拦截到的业务异常
* @param bizException {BizException} 业务异常
*/
static bizFail(bizException) {
return new BizResult(bizException.code, bizException.msg, null);
}
}
module.exports = BizResult
编码:设计统一返回code
/**
* @author ycx
* @description 业务异常通用code
*
*/
class BaseResultCode {
/***********************************/
/**
* code
*/
code;
/**
* 说明
*/
desc;
constructor(code, desc) {
this.code = code;
this.desc = desc;
}
/************************************/
static SUCCESS = new BaseResultCode(200, '成功');
static FAILED = new BaseResultCode(500, '失败');
static VALIDATE_FAILED = new BaseResultCode(400, '参数校验失败');
static API_NOT_FOUNT = new BaseResultCode(404, '接口不存在');
static API_BUSY = new BaseResultCode(700, '操作过于频繁')
}
module.exports =BaseResultCode
在项目中使用他们?,在定义的定义controller层中返回给router 进行send
const BizResult = require("../../../../testing-common/api/BizResult");
/**
* @author ycx
* @description home
*/
class HomeController {
/**
* index api
*/
static index() {
const str = 'hello i am ycx';
//统一返回
return BizResult.success(str);
}
}
module.exports = HomeController
结语
至此 ,码毕!在设计接口返回时候主要需要coder们自我遵守约定,统一规范。如果项目比较多,保持项目内部约定的统一返回格式风格非常重要。