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

响应体和状态码

后端响应体和状态码设计

主流技术:响应体 和 状态码结合使用

响应体:数据 响应 给前端的 格式

1、为什么要设计统一响应体?

1、系统默认提供许多的状态码,但HTTP的状态码数量有限。
通过修改响应返回的JSON数据,更好的表达业务中遇到的情况。

2、目前后端主流RESTful API的数据接口,提高效率。

2、了解最基础的统一响应体

建议采用泛型,而不是采用Object。系统结合Swagger2使用时,Object可能有问题,采用泛型设计就能够读取到list中的字段信息。

/*** 统一 响应体(返回类)* @param <T> 具体数据对象类型*/
@Data//自动生成getter、setter、equals、hashCode和toString方法
public class BaseResponse<T> implements Serializable {private int code;private T data;private String message;//构造函数:在创建对象时为对象的成员变量赋初始值。不需要用户来调用它,在建立对象时自动执行。public BaseResponse(int code, T data, String message) {this.code = code;this.data = data;this.message = message;}public BaseResponse(int code, T data) {this(code, data, "");}/*** 错误 响应体* 统一 响应体 调用 错误状态码ErrorCode。* ErrorCode 包括 (code + 错误 返回的响应体)* @param errorCode*/public BaseResponse(ErrorCode errorCode) {this(errorCode.getCode(), null, errorCode.getMessage());}
}

3、状态码设计

最好设计:枚举类

错误 状态码

/*** 自定义错误码*/
public enum ErrorCode {/*** 组成:错误 状态码 + 错误响应体*                  code + message*/SUCCESS(0, "ok"),PARAMS_ERROR(40000, "请求参数错误"),NOT_LOGIN_ERROR(40100, "未登录"),NO_AUTH_ERROR(40101, "无权限"),NOT_FOUND_ERROR(40400, "请求数据不存在"),FORBIDDEN_ERROR(40300, "禁止访问"),SYSTEM_ERROR(50000, "系统内部异常"),OPERATION_ERROR(50001, "操作失败");/*** 错误响应体 状态码*/private final int code;/*** 错误响应体 信息*/private final String message;ErrorCode(int code, String message) {this.code = code;this.message = message;}public int getCode() {return code;}public String getMessage() {return message;}
}

4、使用

/*** 返回工具类*/
public class ResultUtils {/*** 成功** @param data* @param <T>* @return*/public static <T> BaseResponse<T> success(T data) {return new BaseResponse<>(0, data, "ok");}/*** 失败** @param errorCode* @return*/public static BaseResponse error(ErrorCode errorCode) {return new BaseResponse<>(errorCode);}/*** 失败** @param code* @param message* @return*/public static BaseResponse error(int code, String message) {return new BaseResponse(code, null, message);}/*** 失败** @param errorCode* @return*/public static BaseResponse error(ErrorCode errorCode, String message) {return new BaseResponse(errorCode.getCode(), null, message);}
}
http://www.lryc.cn/news/233299.html

相关文章:

  • CNN进展:AlexNet、VGGNet、ResNet 和 Inception
  • 数据的存储--MongoDB文档存储
  • Notepad++ 通过HexEditor插件查看.hprof文件、heap dump文件的堆转储数据
  • 微服务学习 | Eureka注册中心
  • spring boot集成quartz
  • [Linux] yum仓库相关
  • 2023.11.15-hivesql之炸裂函数explode练习
  • Linux - 内核 - 安全机制 - 内存页表安全
  • Linux---(七)Makefile写进度条(三个版本)
  • 数据库分页查询
  • 如何选择合适的数据库管理工具?Navicat Or DBeaver
  • Opencv!!在树莓派上安装Opencv!
  • 三菱FX3U小项目—传输带定分级控制
  • 实例解释遇到前端报错时如何排查问题
  • 微电影分销付费短剧小程序开发
  • 时间序列预测中的4大类8种异常值检测方法(从根源上提高预测精度)
  • Android---Gradle 构建问题解析
  • 02-2解析JsonPath
  • Git拉取远程指定分支
  • 使用Ant Design Pro开发时的一个快速开发接口请求的技巧
  • m1 rvm install 3.0.0 Error running ‘__rvm_make -j8‘
  • 对产品实现汇率换算服务(将两个CompletableFuture对象整合起来,无论它们是否存在依赖)
  • 数据库期末考前复习题(单选+多选+判断+解答)
  • Ubuntu22.04源码安装ROS-noetic(ROS1非ROS2),编译运行VINS-MONO
  • 窗口管理工具 Mosaic mac中文版功能特点
  • Sql Prompt 10下载安装图文教程
  • VB.net webbrowser 自定义下载接口实现
  • Android 启动优化案例-WebView非预期初始化排查
  • 【MATLAB源码-第80期】基于蚯蚓优化算法(EOA)的无人机三维路径规划,输出做短路径图和适应度曲线
  • 树状图怎么画?推荐这个好用的在线树状图软件!