世界上并没有完美的程序,但是我们并不因此而沮丧,因为写程序就是一个不断追求完美的过程。
接口设计中一些固定的字段是很重要的,但是在我们平时开发中却又最容易忽略,请记住,并不是功能实现了,接口通了,就万事大吉了,作为一个软件架构者,更多的应该考虑的是程序的可维护性、可修改性、可扩展性及安全性,最重要的就是与外界系统的可交互性,所以传值时的一些固定字段就比较重要了,以下是我的总结以及自己实现的通用返回类,希望对大家有所帮助:
必须包含的字段:
状态:status
状态码:statusCode
信息:message
版本号:version
时间戳:curTime
编码方式:encode
加解密方式:encrypt
唯一ID:UUID
结果示例:
{
"header": {
"encode": "UTF-8",
"curTime": 1606384337747,
"encrypt": null,
"UUID": "9a2e86f71ff2417ca638273516f743d8",
"message": "ok",
"version": "1",
"status": "OK",
"statusCode": 0
},
"body": {
“name”; "result"
}
}
返回类:
@Data
public class Result {
/**
* 状态
*/
public static final String STATUS = "status";
/**
* 状态码
*/
public static final String STATUS_CODE = "statusCode";
/**
* 信息
*/
public static final String MESSAGE = "message";
/**
* 版本
*/
public static final String VERSION = "version";
/**
* 时间戳
*/
public static final String CUR_TIME = "curTime";
/**
* 编码方式
*/
public static final String ENCODE = "encode";
/**
* 加密方式
*/
public static final String ENCRYPT = "encrypt";
/**
* UUID
*/
public static final String UUID = "UUID";
private static final int COMMON_LENGTH = 16;
private static final String OK = "ok";
private static final String UTF_8 = "UTF-8";
private static String version = "1";
private final Map<String, Object> header;
private final Map<String, Object> body;
private Result () {
header = new HashMap<>(COMMON_LENGTH);
body = new HashMap<>(COMMON_LENGTH);
header.put(CUR_TIME, System.currentTimeMillis());
header.put(VERSION, version);
header.put(ENCODE, UTF_8);
header.put(ENCRYPT, null);
header.put(UUID, UUIDUtils.getUUID32());
}
public static Result newInstance () {
return new Result();
}
public Result ok () {
header.put(STATUS, Status.OK);
header.put(STATUS_CODE, Status.OK.getCode());
header.put(MESSAGE, OK);
return this;
}
public Result add (String key, Object value) {
body.put(key, value);
return this;
}
public Result error (Object value) {
header.put(STATUS, Status.ERROR);
header.put(STATUS_CODE, Status.ERROR.getCode());
header.put(MESSAGE, value);
return this;
}
public enum Status {
/**
* OK - 成功,ERROR - 失败
*/
OK(0), ERROR(1);
private int code;
Status (int code) {
this.code = code;
}
public int getCode() {
return code;
}
}
public Object getHeader (String key) {
return header.get(key);
}
public Object getBody (String key) {
return body.get(key);
}
}