• (三)SpringBoot定义统一返回result对象


    一:定义响应码枚举

    package com.example.demo.core.ret;
    
    /**
     * @Description: 响应码枚举,参考HTTP状态码的语义
     * @author 
     * @date 2018/4/19 09:42
     */
    public enum RetCode {
    
       // 成功
       SUCCESS(200),
    
       // 失败
       FAIL(400),
    
       // 未认证(签名错误)
       UNAUTHORIZED(401),
    
       // 接口不存在
       NOT_FOUND(404),
    
       // 服务器内部错误
       INTERNAL_SERVER_ERROR(500);
    
       public int code;
    
       RetCode(int code) {
          this.code = code;
       }
    }
    

      

    二:创建返回对象实体(泛型)

    package com.example.demo.core.ret;
    
    import java.io.Serializable;
    
    import com.alibaba.fastjson.JSON;
    
    /**
     * @Description: 返回对象实体
     * @author 
     * @date 2018/4/19 09:43
     */
    public class RetResult<T> {
    
       public int code;
    
       private String msg;
    
       private T data;
    
       public RetResult<T> setCode(RetCode retCode) {
          this.code = retCode.code;
          return this;
       }
    
       public int getCode() {
          return code;
       }
    
       public RetResult<T> setCode(int code) {
          this.code = code;
          return this;
       }
    
       public String getMsg() {
          return msg;
       }
    
       public RetResult<T> setMsg(String msg) {
          this.msg = msg;
          return this;
       }
    
       public T getData() {
          return data;
       }
    
       public RetResult<T> setData(T data) {
          this.data = data;
          return this;
       }
    
    }
    

      说明:code为状态码、msg为提示信息、data为返回的数据

    四:返回结果数据格式封装

    package com.example.demo.core.ret;
    
    /**
     * @Description: 将结果转换为封装后的对象
     * @author 
     * @date 2018/4/19 09:45
     */
    public class RetResponse {
    
       private final static String SUCCESS = "success";
    
       public static <T> RetResult<T> makeOKRsp() {
          return new RetResult<T>().setCode(RetCode.SUCCESS).setMsg(SUCCESS);
       }
    
       public static <T> RetResult<T> makeOKRsp(T data) {
          return new RetResult<T>().setCode(RetCode.SUCCESS).setMsg(SUCCESS).setData(data);
       }
    
       public static <T> RetResult<T> makeErrRsp(String message) {
          return new RetResult<T>().setCode(RetCode.FAIL).setMsg(SUCCESS);
       }
    
       public static <T> RetResult<T> makeRsp(int code, String msg) {
          return new RetResult<T>().setCode(code).setMsg(msg);
       }
       
       public static <T> RetResult<T> makeRsp(int code, String msg, T data) {
          return new RetResult<T>().setCode(code).setMsg(msg).setData(data);
       }
    }
    

      

    五:功能测试

    @RequestMapping("/selectById")
    public RetResult<UserInfo> selectById(Integer id){
        UserInfo userInfo = userInfoService.selectById(id);
        return RetResponse.makeOKRsp(userInfo);
    }
    

      改造后请求返回数据格式

    {
        "code": 200,
        "msg": "success",
        "data": {
            "id": 1,
            "userName": "1"
        }
    }
    

      

  • 相关阅读:
    习题解答chapter-01
    Java-chapter-01 菜鸟初见Java
    ijkdemo
    1027
    avformat_seek_file
    pla
    android1010横屏等
    文件浏览对话框
    智能指针处理---bo
    Js为Dom元素绑定事件须知
  • 原文地址:https://www.cnblogs.com/yui66/p/9615709.html
Copyright © 2020-2023  润新知