当前位置 主页 > 网站技术 > 代码类 >

    Java接口统一样式返回模板简介

    栏目:代码类 时间:2019-10-31 12:08

    这篇文章主要介绍了Java接口统一样式返回模板简介,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    背景

    在进行接口开发时,一般需要一个固定的返回样式,成功和失败的时候,都按照这种格式来进行统一的返回,这样,在与其他人进行接口之间的联调时不会显得很杂乱无章。而这种固定的格式如果放在Java的每个接口单独处理时,又会在接口开发时很繁琐,所以这个时候可以采用封装一个实体类,统一返回固定模板格式的内容。

    封装模板

    先看一下没有封装之前,接口代码和返回格式:

    /**
     * 用户修改
     * @return 返回修改的用户信息
     */
    @PutMapping(value = "update")
    public User update(@RequestBody User user) {
        User updatedUser = userService.update(user);
        return updatedUser;
    }
    {
      "userId": "0d67cfa7-f6a1-46b6-8e5a-b605afc98c44",
      "username": "ww",
      "password": "123456",
      "status": 0,
      "createTime": 310863886132307,
      "updateTime": 312955781619836
    }

    很显然,这种原始的内容返回虽然很直观,但是如果在发生错误的时候,那么接口的返回就比较的不自然了,甚至会将底层的错误对外暴露,下面介绍下一个简单的统一接口样式的封装:

    枚举类ResponseCode:定义返回码code及提示信息msg

    我们先定义一个枚举类,用于封装返回的code码和提示信息msg,当然也可以封装其他的信息,比如状态status,这个可以根据自己的项目自由选择。

    package com.server.config;
    
    /**
     * @Package com.server.config
     * @Author wuzy
     * @Date 2019/10/30 14:47
     * @Version V1.0
     * @Description: code码封装枚举类
     */
    
    public enum ResponseCode {
      /** 成功 */
      SUCCESS("200", "成功"),
    
      /** 操作失败 */
      ERROR("500", "操作失败");
    
      private ResponseCode(String value, String msg){
        this.val = value;
        this.msg = msg;
      }
    
      public String val() {
        return val;
      }
    
      public String msg() {
        return msg;
      }
    
      private String val;
      private String msg;
    }

    封装类ResultData: 定义code、msg及数据data

    再定义一个封装类ResultData,该类用于接口返回时的统一格式封装,这里,我们定义了三个属性,分别为状态码code,提示消息msg以及返回的数据data。下面是具体的代码:

    package com.server.config;
    
    import lombok.Data;
    
    /**
     * @Package com.server.config
     * @Author wuzy
     * @Date 2019/10/30 14:38
     * @Version V1.0
     * @Description: 返回样式封装
     */
    @Data
    public class ResultData {
    
      private String code;
    
      private String msg;
    
      private Object data;
    
      public static ResultData success(Object data) {
        return resultData(ResponseCode.SUCCESS.val(), ResponseCode.SUCCESS.msg(), data);
      }
    
      public static ResultData success(Object data, String msg) {
        return resultData(ResponseCode.SUCCESS.val(), msg, data);
      }
    
      public static ResultData fail(String code, String msg) {
        return resultData(code, msg, null);
      }
      public static ResultData fail(String code, String msg, Object data) {
        return resultData(code, msg, data);
      }
    
      private static ResultData resultData(String code, String msg, Object data) {
        ResultData resultData = new ResultData();
        resultData.setCode(code);
        resultData.setMsg(msg);
        resultData.setData(data);
        return resultData;
      }
    }