当前位置: 首页 > news >正文

【开端】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);}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 回顾Python
  • 在树莓派上安装udhcpd的步骤
  • 2024年TI杯E题-三子棋游戏装置方案分享-jdk123团队-第三弹视觉模块的封装
  • 打造核心竞争力:中集集团技术创新之路
  • 【MetaGPT系列】【MetaGPT完全实践宝典——多智能体实践(辩论赛)构建】
  • 十九、虚拟机VMware Workstation(CentOSDebian)的安装
  • 前端项目中的Server-sent Events(SSE)项目实践及其与websocket的区别
  • PDF怎么在线转Word?介绍四种转换方案
  • MATLAB(R和C++)大肠杆菌合成生物机械数学模型
  • c语言中的volatile(从系统层面看)
  • 计算机网络408考研 2019
  • python:“ func“和“ func()“的区别
  • 用Python打造精彩动画与视频,9.3 项目案例分享与反思
  • 寻参算法之狼群算法
  • k8s持久化存储PV和PVC
  • Apache的基本使用
  • canvas 绘制双线技巧
  • Java深入 - 深入理解Java集合
  • Python利用正则抓取网页内容保存到本地
  • Rancher-k8s加速安装文档
  • React组件设计模式(一)
  • springboot_database项目介绍
  • vue-cli3搭建项目
  • XForms - 更强大的Form
  • 机器学习中为什么要做归一化normalization
  • 基于组件的设计工作流与界面抽象
  • 如何利用MongoDB打造TOP榜小程序
  • 如何设计一个比特币钱包服务
  • Java性能优化之JVM GC(垃圾回收机制)
  • zabbix3.2监控linux磁盘IO
  • 回归生活:清理微信公众号
  • ​​​​​​​sokit v1.3抓手机应用socket数据包: Socket是传输控制层协议,WebSocket是应用层协议。
  • # wps必须要登录激活才能使用吗?
  • #if等命令的学习
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (Arcgis)Python编程批量将HDF5文件转换为TIFF格式并应用地理转换和投影信息
  • (六)c52学习之旅-独立按键
  • (论文阅读30/100)Convolutional Pose Machines
  • (一)基于IDEA的JAVA基础1
  • (转)eclipse内存溢出设置 -Xms212m -Xmx804m -XX:PermSize=250M -XX:MaxPermSize=356m
  • (转)编辑寄语:因为爱心,所以美丽
  • (转)如何上传第三方jar包至Maven私服让maven项目可以使用第三方jar包
  • .bat批处理(九):替换带有等号=的字符串的子串
  • .NET Framework 3.5中序列化成JSON数据及JSON数据的反序列化,以及jQuery的调用JSON
  • .net 按比例显示图片的缩略图
  • .NET 中什么样的类是可使用 await 异步等待的?
  • .net反混淆脱壳工具de4dot的使用
  • .NET设计模式(2):单件模式(Singleton Pattern)
  • .net之微信企业号开发(一) 所使用的环境与工具以及准备工作
  • @Mapper作用
  • [240812] X-CMD 发布 v0.4.5:更新 gtb、cd、chat、hashdir 模块功能
  • [383] 赎金信 js
  • [ASP]青辰网络考试管理系统NES X3.5
  • [C++]:for循环for(int num : nums)
  • [CentOs7]iptables防火墙安装与设置