温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何使用spring boot实现统一JSON格式的接口返回结果

发布时间:2021-06-09 15:15:43 来源:亿速云 阅读:181 作者:小新 栏目:编程语言

这篇文章主要介绍了如何使用spring boot实现统一JSON格式的接口返回结果,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

第一步,定义好JavaBean。

package com.yclouds.myhelper.web.response;
 
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.yclouds.myhelper.web.error.code.BaseEnumError;
import java.io.Serializable;
import lombok.Data;
 
/**
 * 所有服务统一响应数据格式
 *
 * @author ye17186
 * @version 2019/2/15 14:40
 */
@Data
public class ApiResp<T> implements Serializable {
 
  private static final long serialVersionUID = 9211889136173018364L;
 
  /**
   * 正常响应码
   */
  private static final int SUCCESS_CODE = 0;
 
  /**
   * 正常响应消息
   */
  private static final String SUCCESS_MSG = "SUCCESS";
 
  /**
   * 错误码
   */
  private int code = SUCCESS_CODE;
 
  /**
   * 错误信息
   */
  private String msg = SUCCESS_MSG;
 
  /**
   * 响应内容,默认为null
   */
  private T data = null;
 
  /**
   * 是否的正常响应
   *
   * @return true=正常;false=异常
   */
  @JsonIgnore
  public boolean isOK() {
    return code == SUCCESS_CODE;
  }
 
  /**
   * 无data的正常返回
   */
  public static ApiResp retOK() {
    return new ApiResp();
  }
 
  /**
   * 有data的正常返回
   *
   * @param data data内容
   * @param <T> data类型
   */
  public static <T> ApiResp<T> retOK(T data) {
    ApiResp<T> response = new ApiResp<>();
    response.setData(data);
    return response;
  }
 
  /**
   * 无data的失败返回
   *
   * @param error 错误类型
   */
  public static ApiResp retFail(BaseEnumError error) {
    return retFail(error.getCode(), error.getMsg());
  }
 
  /**
   * 有data的失败返回
   *
   * @param error 错误类型
   * @param data 详细错误信息
   */
  public static <T> ApiResp<T> retFail(BaseEnumError error, T data) {
    return retFail(error.getCode(), error.getMsg(), data);
  }
 
  /**
   * 无data的失败返回
   *
   * @param code 错误码
   * @param msg 错误信息
   */
  public static <T> ApiResp<T> retFail(int code, String msg) {
    ApiResp<T> response = new ApiResp<>();
    response.setCode(code);
    response.setMsg(msg);
    return response;
  }
 
  /**
   * 有data的失败返回
   * <br>
   * 失败返回的场景不多,所以没有严格要求T泛型
   *
   * @param code 错误码
   * @param msg 错误信息
   */
  public static <T> ApiResp<T> retFail(int code, String msg, T data) {
    ApiResp<T> response = new ApiResp<>();
    response.setCode(code);
    response.setMsg(msg);
    response.setData(data);
    return response;
  }
}

第二步,在Controller中使用

  @GetMapping("/test1")
  public ApiResp test1() {
 
    return ApiResp.retOK("Hello World");
  }
 
  @GetMapping("/test2")
  public ApiResp test2() {
 
    return ApiResp.retFail(BaseEnumError.SYSTEM_NO_LOGIN);
  }

可以在Postman查看具体的响应内容如下:

如何使用spring boot实现统一JSON格式的接口返回结果

如何使用spring boot实现统一JSON格式的接口返回结果

当然,ApiResp中的泛型,也可以使用复杂的数据对象。实际开发中,每种错误响应都有自己的响应码code,和错误信息msg,示例中统一定义了一个BaseEnumError的枚举类,具体内容可参照我的github项目https://github.com/ye17186/myhelper-spring-boot-starter

感谢你能够认真阅读完这篇文章,希望小编分享的“如何使用spring boot实现统一JSON格式的接口返回结果”这篇文章对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,更多相关知识等着你来学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI