前言:
在设计 API 接口时,实现统一格式返回是一个重要的考虑因素。 统一格式返回有助于提高 API 的可读性、可维护性和可扩展性。
一、设置统一返回实体类
1.定义返回实体及字段状态码
package com.shop.config;
import java.io.Serializable;
/**
* @author: 宁兴星
* Date: 2024/7/27 20:40
* Description:
*/
public class Result<T> implements Serializable {
private static final long serialVersionUID = 1L;
/** 成功 */
public static final int SUCCESS = 200; // TODO 这里的状态码200可以提到 公共常量类 中
/** 失败 */
public static final int FAIL = 500; // TODO 这里的状态码200可以提到 公共常量类 中
private int code;
private String msg;
private T data;
public Result(){
}
public Result(int warn, String msg, T data) {
this.code = warn;
this.msg = msg;
this.data = data;
}
public static <T> Result<T> success()
{
return restResult(null, SUCCESS, null);
}
public static <T> Result<T> success(T data)
{
return restResult(data, SUCCESS, null);
}
public static <T> Result<T> success(T data, String msg)
{
return restResult(data, SUCCESS, msg);
}
public static <T> Result<T> error()
{
return restResult(null, FAIL, null);
}
public static <T> Result<T> error(String msg)
{
return restResult(null, FAIL, msg);
}
public static <T> Result<T> error(T data)
{
return restResult(data, FAIL, null);
}
public static <T> Result<T> error(T data, String msg)
{
return restResult(data, FAIL, msg);
}
public static <T> Result<T> error(int code, String msg)
{
return restResult(null, code, msg);
}
private static <T> Result<T> restResult(T data, int code, String msg)
{
Result<T> apiResult = new Result<>();
apiResult.setCode(code);
apiResult.setData(data);
apiResult.setMsg(msg);
return apiResult;
}
public int getCode()
{
return code;
}
public void setCode(int 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;
}
public static <T> Boolean isError(Result<T> ret)
{
return !isSuccess(ret);
}
public static <T> Boolean isSuccess(Result<T> ret)
{
return Result.SUCCESS == ret.getCode();
}
}
二、如何使用?
1.我们先来看看没有加统一返回的api返回格式:
2.我们再来看看加上统一返回结果集后返回的数据:
接下来就可以Result.getData()/getMessage()/getCode() 等结果集的操作了