Spring Cloud 架构设计之API接口错误码定义

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;
   }
}```

总结

写完了,弱弱的问下,可以帮我的开源项目点个赞码?

你可能感兴趣的:(基于微服务开发一款互联网产品,spring,cloud,后端,架构,restful,分布式)