zoukankan      html  css  js  c++  java
  • (三)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"
        }
    }
    

      

  • 相关阅读:
    Linux反编译
    函数调用 堆栈
    机器学习经典书籍
    linux kernel系列四:嵌入式系统中的文件系统以及MTD
    Linux Kernel系列三:Kernel编译和链接中的linker script语法详解
    单页面响应式模板:血色圆月
    Disqus评论框改造工程-Jekyll等静态博客实现Disqus代理访问
    25个Web前端开发工程师必看的国外大牛和酷站
    我们是谁? 程序员!
    GitHub万星项目:黑客成长技术清单
  • 原文地址:https://www.cnblogs.com/yui66/p/9615709.html
Copyright © 2011-2022 走看看