【开端】web系统中返回状态码组织管理

一、绪论

       http  web系统接口返回状态码有很多中,包括行业内定的状态码 ,比如200 表示成功,500表示服务器系统不可用,但是有包含很多业务上自定义的状态码。比如阿里,腾讯这些公司的产品会定义很多自己公司产品的状态码,外人一般只能看到状态码,不知道状态码的内容。这是就是需要对状态码进行管理,就如同字段,通过状态码查找状态码的信息。

二、http返回状态码和表示的内容

HTTP(超文本传输协议)是一种用于在客户端和服务器之间传输数据的协议。在HTTP通信过程中,服务器会返回一个状态码,用于表示请求的处理结果。这个状态码由三位数字组成,每个状态码都有特定的含义。下面是常见的HTTP返回状态码:

1. 1xx(信息性状态码):表示接收的请求正在处理。

   100(继续):服务器已经接收到请求的头部,并且客户端应该继续发送请求的剩余部分。

   101(切换协议):服务器要求切换协议,例如从HTTP协议切换到WebSocket协议。

2. 2xx(成功状态码):表示请求已成功处理。

   200(成功):请求已成功处理,并返回所请求的数据。

   201(已创建):请求成功,并且服务器创建了一个新的资源。

   204(无内容):请求成功处理,但没有返回任何内容。

3. 3xx(重定向状态码):表示需要进一步操作才能完成请求。

   301(永久重定向):请求的资源已永久移动到新的URL。

   302(临时重定向):请求的资源暂时移动到新的URL。

   304(未修改):客户端发送了一个条件请求,服务器返回未修改的状态,表示客户端缓存的副本仍有效。

4. 4xx(客户端错误状态码):表示客户端发生了错误。

    400(错误请求):服务器无法理解客户端发送的请求。

   401(未授权):请求需要用户身份验证。

   403(禁止):服务器拒绝了客户端的请求。

   404(未找到):请求的资源不存在。

5. 5xx(服务器错误状态码):表示服务器发生了错误。

   500(服务器内部错误):服务器发生了未知的内部错误。

    502(错误网关):服务器作为网关或代理,从上游服务器接收到无效的响应。

    503(服务不可用):服务器暂时无法处理请求,通常是由于过载或维护。

除了上述常见的HTTP状态码,还有一些其他状态码,如206(部分内容)、301(永久重定向)、401(未授权)、403(禁止)、408(请求超时)、429(太多请求)等,每个状态码都有其特定的含义和用途。

在Web开发中,了解HTTP状态码对于调试和排查问题非常重要。通过观察返回的状态码,我们可以了解请求是否成功、是否需要重定向、是否有权限访问资源等信息,从而根据不同的状态码采取相应的处理措施。

三、可以通过枚举类型管理状态码

例如:

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

使用:

  public static <T> ResponseData<T> error(ResponseCode code, T data) {
        return error(code.getCode(), code.getMessage(), data);
    }

  public static <T> ResponseData<T> error(ResponseCode code, T data) {
        return error(code.getCode(), code.getMessage(), data);
    }

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奋力向前123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值