IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> 返回接口调用结果类 -> 正文阅读

[开发测试]返回接口调用结果类

使用背景:

后台接口返回数据给(网页/app)时, 一般都是按照以下格式进行返回.

{
    "code": "200",
    "msg": "查询成功",
    "data": {}
}

其中, code 为状态码, msg 为提示文字, data 为具体返回数据.

首先明确: 这三种数据不是固定的.?

比如: msg字段值, 一定会随着项目需求的增加, 不断的进行新增/修改.?

最初, 我创建?一个 枚举类, 在该枚举类中定义一些错误提示, 项目最开始需求不多, 错误提示在这一个枚举类中并不算多.

可随着后续项目的不断变化, 提示语句/状态码越来越多.

这时候如果都在这一个 枚举类中进行新增/修改, 且不说效率如何, 光是代码看着就让人极不舒适.?

另外还有一点: 在多个单服务项目中, 一般都会创建不同的提示枚举类...

这里记录一个目前找到的比较可以接收的结果集封装方法:

1. 定义一个接口

public interface ResultCode {

    String getCode();

    String getMsg();

}

2. 创建 提示枚举类, 实现该接口

public enum ResultMsg implements ResultCode {
    /**
     * 返回状态: 成功200, 失败非200
     */
    CODE_SUCCESS("200", "操作成功"),
    CODE_ERROR("0", "操作失败"),
    ;

    public String code;
    public String msg;

    ResultMsg(String code, String msg) {
        this.code = code;
        this.msg = msg;
    }

    @Override
    public String getCode() {
        return code;
    }

    @Override
    public String getMsg() {
        return msg;
    }

}

3. 创建 返回对象

public class ResultVO<T> {
    private String code;
    private String msg;
    private T data;

    public ResultVO() {
    }

    public ResultVO(String code, String msg, T data) {
        this.code = code;
        this.msg = msg;
        this.data = data;
    }

    public ResultVO(String code, String msg) {
        this.code = code;
        this.msg = msg;
    }

    public ResultVO(String msg, T data) {
        this.msg = msg;
        this.data = data;
    }

    public ResultVO(ResultCode resultCode) {
        this.code = resultCode.getCode();
        this.msg = resultCode.getMsg();
    }

    public ResultVO(ResultCode resultCode, T data) {
        this.code = resultCode.getCode();
        this.msg = resultCode.getMsg();
        this.data = data;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public T getData() {
        return data;
    }

    public void setData(T data) {
        this.data = data;
    }
}

4. 最终调用方法

public class Rd {

    /**
     * 成功/失败 - 返回状态码+提示语句+数据展示
     *
     * @param resultCode
     * @param data
     * @return
     */
    public static ResultVO result(ResultCode resultCode, Object data) {
        return new ResultVO(resultCode.getCode(), resultCode.getMsg(), data);
    }

    /**
     * 成功/失败 - 返回状态码+提示语句
     *
     * @param resultCode
     * @return
     */
    public static ResultVO result(ResultCode resultCode) {
        return new ResultVO(resultCode.getCode(), resultCode.getMsg());
    }


}

5. 使用示例

@RequestMapping("/test")
@RestController
public class TestController {

    @RequestMapping("/test1")
    public ResultVO<String> test1() {
        return Rd.result(ResultMsg.CODE_SUCCESS);
    }

    @RequestMapping("/test2")
    public ResultVO<Date> test2() {
        return Rd.result(ResultMsg.CODE_SUCCESS, new Date());
    }

    @RequestMapping("/test3")
    public ResultVO test3() {
        return Rd.result(ResultMsg.CODE_SUCCESS, new Date());
    }
    

}

之后, 只要你创建 [提示枚举类], 只需要? implements ResultCode , 即可在接口返回时, 调用:

Rd.result(ResultMsg.CODE_SUCCESS)...

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2022-04-06 16:20:21  更:2022-04-06 16:20:55 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/18 1:48:33-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码