Spring Cloud 架构设计之API接口错误码定义
前言
近期,本人在开发一款互联网产品,项目地址https://github.com/yjjhkyq/doubi。同时,我也将通过连载的方式,将这款互联网产品的架构、技术细节等逐步记录下来,欢迎大家指正。
一、定义错误码结构
public interface IErrorCode {
long getCode();
String getMessage();
}
错误码定义为一个接口,分别返回long类型的错误编码以及String类型的错误信息
二、公共错误码
public enum ResultCode implements IErrorCode {
SUCCESS(200, "操作成功"),
FAILED(500, "操作失败"),
VALIDATE_FAILED(404, "参数检验失败"),
UNAUTHORIZED(401, "暂未登录或token已经过期"),
FORBIDDEN(403, "没有相关权限"),
GREEN_BLOCKED(1, "内容违规"),
;
private long code;
private String message;
ResultCode(long code, String message) {
this.code = code;
this.message = message;
}
@Override
public long getCode() {
return code;
}
@Override
public String getMessage() {
return message;
}
}
公共错误码主要定义一些常用的公共错误信息,例如200 表示成功,500 表示失败。
二、各个微服务错误码定义
一个项目右多个微服务组成,那么,各个微服务的错误码应该如何定义呢?
- 给各个微服务定义一个错误码范围,定义错误码范围方式有很多种。本产品中错误码格式为:固定前缀(4位)+自定义后缀 (4位), 后4位从0001开始递增。
- 同样,错误结构定义也是实现IErrorCode接口,如下为视频微服务错误码定义:
public enum VideoErrorEnum implements IErrorCode {
VIDEO_TITLE_REVIEW_BLOCKED(92060001L, "视频标题审核没有通过哦,请调整视频标题"),
VIDEO_NOT_EXISTED(92060002L, "视频已经被作者删除"),
;
private long code;
private String message;
VideoErrorEnum(long code, String message) {
this.code = code;
this.message = message;
}
@Override
public long getCode() {
return 0;
}
@Override
public String getMessage() {
return null;
}
}```
总结
写完了,弱弱的问下,可以帮我的开源项目点个赞码?