怎么定义一套完成标准的JAVA枚举类型

2023-12-20 16:58:54

一、背景

? 在java代码中,接口返回有各种各样的状态,比如400? 401? 200 500 403等常见的http状态码,也有我们自定义的很多业务状态码。如果系统比较复杂,制定一套完整的标准的状态码是非常有必要的,这样比较方面BUG排查。

二、枚举类

在Java中,枚举类型是一种特殊的类,它包含了一组常量。Java 枚举是一种数据类型,它包含固定数量的常量。枚举在Java中被视为数据类型,你可以使用它们来创建枚举类型的变量,然后使用那些变量等。

如我们可以对状态码进行规划

10001-19999 定义为参数相关的状态码

20001-29999 定义为用户模块相关的状态码

。。。。。

等等

public enum ResponseCode {

    /* 公共状态码 */
    SUCCESS(200, "成功"),
    FAILED(400, "失败"),
    UNAUTHORIZED(401, "签名错误"),
    NOT_FOUND(404, "此接口不存在"),
    INTERNAL_SERVER_ERROR(500, "系统繁忙,请稍后再试"),

    /* 参数错误:10001-19999 */
    PARAM_IS_INVALID(10001, "参数无效"),
    PARAM_IS_BLANK(10002, "参数为空"),
    PARAM_TYPE_BIND_ERROR(10003, "参数类型错误"),
    PARAM_NOT_COMPLETE(10004, "参数缺失"),

    /* 用户错误:20001-29999*/
    USER_NOT_LOGGED_IN(20001, "用户未登录"),
    USER_LOGIN_ERROR(20002, "账号不存在或密码错误"),
    USER_ACCOUNT_FORBIDDEN(20003, "账号已被禁用"),
    USER_NOT_EXIST(20004, "用户不存在"),
    USER_HAS_EXISTED(20005, "用户已存在"),
    LOGIN_CREDENTIAL_EXISTED(20006, "凭证已存在"),

    //微信授权 错误码
    WEIXIN_ENCRYPT_ERROR(30001,"企业微信授权解密失败"),
    
	
	/*权限相关:40001-49999 */
	NO_PERMISS(40001,"无权限访问"),
	IS_LIMIT_ACC(40002,"访问过于频繁限制访问"),

    /* 业务错误:50001-59999 */
	WX_QRCODE_NULL(50001,"微信二维码获取内容不可用"),

    /* 业务错误:60001-69999 */
    XSS_CODE_ERROR(60001,"存在xss 恶意攻击脚本");
	

    private Integer code;

    private String message;

    ResponseCode(int code, String message) {
        this.code = code;
        this.message = message;
    }

    public int getCode() {
        return code;
    }

    public String getMessage() {
        return message;
    }
}

三、http状态码

HTTP状态码是用于表示HTTP请求的处理结果的数字代码。HTTP状态码由三部分组成:状态码的第一个数字表示响应的类别,中间的数字表示具体状态,最后一个数字提供更详细的信息。

常见的HTTP状态码包括:

  1. HTTP状态码分为5类,每一类有不同的数字和含义。

  2. 1xx:表示收到请求并继续处理。这类状态码是信息响应码,通知接收者请求已成功开始处理。例如:
  3. 100 Continue:请求者应当继续提出请求。服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。
  4. 101 Switching Protocols:请求者已要求服务器切换协议,服务器已确认并准备切换。
  5. 102 Processing:由WebDAV(RFC 2518)扩展的状态码,代表处理将被继续执行。
  6. 2xx:表示成功处理了请求。这类状态码是成功响应码,表示服务器已成功处理了请求。例如:
  7. 200 OK:请求已正常处理。
  8. 201 Created:请求成功且服务器已创建了新的资源。
  9. 202 Accepted:请求已被服务器接受,但尚未开始处理。
  10. 203 Non-Authoritative Information:已收到请求,但接下来的信息并不来自服务器。
  11. 204 No Content:请求处理成功,但没有任何资源可以返回给客户端。
  12. 205 Reset Content:请求已成功,但请求者应重置浏览器。
  13. 206 Partial Content:对资源某一部分的请求,服务器已执行了部分GET请求。
  14. 3xx:要完成请求必须进一步执行的动作。这类状态码是重定向响应码,表示需要采取进一步的动作才能完成请求。例如:
  15. 300 Multiple Choices:多重选择。客户端可选择多个选项,因此服务器会给出一个列表让客户端进行选择。
  16. 301 Moved Permanently:资源的URI已更新,应更新书签引用。永久性重定向,请求的资源已经被分配了新的URI,以后应使用资源现在所指的URI。
  17. 302 Found:资源的URI已临时定位到其他位置。临时性重定向,客户端应继续使用当前的位置。
  18. 303 See Other:资源的URI已更新,应临时按新的URI访问。临时性重定向,客户端应临时使用新的URI。
  19. 304 Not Modified:客户端发送了请求,但服务器未进行修改。这表示缓存的版本仍然是有效的,客户端可以直接从缓存中获取响应。
  20. 305 Use Proxy:必须通过代理服务器访问资源。这表示服务器不是直接的HTTP代理服务器,但客户端应使用指定的代理服务器来访问该资源。
  21. 4xx:请求包含语法错误或者无法完成请求。这类状态码是客户端错误响应码,表示客户端发送的请求有错误或无法被服务器理解。例如:
  22. 400 Bad Request:请求格式错误或无法理解。
  23. 401 Unauthorized:没有授权访问请求的资源。这可能是由于缺乏认证信息或客户端未被授权访问该资源。
  24. 403 Forbidden:服务器理解请求客户端的意图,但是拒绝执行它。这可能是由于权限限制或访问控制导致的。
  25. 404 Not Found:服务器无法找到客户端请求的资源。这可能是由于资源不存在或URL错误导致的。
  26. 5xx:服务器在处理请求的过程中发生了错误。这类状态码是服务器错误响应码

文章来源:https://blog.csdn.net/dongjing991/article/details/135108938
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。