怎么定义一套完成标准的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状态码包括:
-
HTTP状态码分为5类,每一类有不同的数字和含义。
- 1xx:表示收到请求并继续处理。这类状态码是信息响应码,通知接收者请求已成功开始处理。例如:
- 100 Continue:请求者应当继续提出请求。服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。
- 101 Switching Protocols:请求者已要求服务器切换协议,服务器已确认并准备切换。
- 102 Processing:由WebDAV(RFC 2518)扩展的状态码,代表处理将被继续执行。
- 2xx:表示成功处理了请求。这类状态码是成功响应码,表示服务器已成功处理了请求。例如:
- 200 OK:请求已正常处理。
- 201 Created:请求成功且服务器已创建了新的资源。
- 202 Accepted:请求已被服务器接受,但尚未开始处理。
- 203 Non-Authoritative Information:已收到请求,但接下来的信息并不来自服务器。
- 204 No Content:请求处理成功,但没有任何资源可以返回给客户端。
- 205 Reset Content:请求已成功,但请求者应重置浏览器。
- 206 Partial Content:对资源某一部分的请求,服务器已执行了部分GET请求。
- 3xx:要完成请求必须进一步执行的动作。这类状态码是重定向响应码,表示需要采取进一步的动作才能完成请求。例如:
- 300 Multiple Choices:多重选择。客户端可选择多个选项,因此服务器会给出一个列表让客户端进行选择。
- 301 Moved Permanently:资源的URI已更新,应更新书签引用。永久性重定向,请求的资源已经被分配了新的URI,以后应使用资源现在所指的URI。
- 302 Found:资源的URI已临时定位到其他位置。临时性重定向,客户端应继续使用当前的位置。
- 303 See Other:资源的URI已更新,应临时按新的URI访问。临时性重定向,客户端应临时使用新的URI。
- 304 Not Modified:客户端发送了请求,但服务器未进行修改。这表示缓存的版本仍然是有效的,客户端可以直接从缓存中获取响应。
- 305 Use Proxy:必须通过代理服务器访问资源。这表示服务器不是直接的HTTP代理服务器,但客户端应使用指定的代理服务器来访问该资源。
- 4xx:请求包含语法错误或者无法完成请求。这类状态码是客户端错误响应码,表示客户端发送的请求有错误或无法被服务器理解。例如:
- 400 Bad Request:请求格式错误或无法理解。
- 401 Unauthorized:没有授权访问请求的资源。这可能是由于缺乏认证信息或客户端未被授权访问该资源。
- 403 Forbidden:服务器理解请求客户端的意图,但是拒绝执行它。这可能是由于权限限制或访问控制导致的。
- 404 Not Found:服务器无法找到客户端请求的资源。这可能是由于资源不存在或URL错误导致的。
- 5xx:服务器在处理请求的过程中发生了错误。这类状态码是服务器错误响应码
文章来源:https://blog.csdn.net/dongjing991/article/details/135108938
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!