SpringBoot前后端分离项目返回给前端统一数据格式的封装

1,417 阅读1分钟

项目开发的过程中, 后端要统一返回的数据结构,便于前端处理。例如每个请求,我们都需要知道 :

1. code : 服务器返回的状态码。例如 : 200 : 请求成功。500 : 服务器内部错误。

2. message: essage: 返回给前端的信息(比如请求成功等)

3. data :  返回给用户的数据(比如查询的信息)。

下面是封装完整的返回数据类:

import com.yyfly.common.http.HTTP;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;

/**
 * 响应
 *
 * @author lin
 * @date : 2018-08-08
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class ResponseData implements Serializable {

    private static final long serialVersionUID = -6936648847780505144L;

    /**
     * 状态码
     */
    public Integer code;

    /**
     * 返回的消息
     */
    public String message;

    /**
     * 返回的数据
     */
    public Object data;

    @Override
    public String toString() {
        return "ResponseData{" +
                "code=" + code +
                ", message='" + message + '\'' +
                ", data=" + data +
                '}';
    }

    public static ResponseData success() {
        return success("request succeeded");
    }

    public static ResponseData success(Object data) {
        return success("request succeeded", data);
    }

    public static ResponseData success(String message, Object data) {
        return success(HTTP.SC_OK, message, data);
    }

    public static ResponseData success(Integer code, String message, Object data) {
        return build(code, message, data);
    }

    public static ResponseData error(Integer code) {
        return error(code, "request fail");
    }

    public static ResponseData error(Integer code, String message) {
        return error(code, message, null);
    }

    public static ResponseData error(Integer code, String message, Object data) {
        return build(code, message, data);
    }

    public static ResponseData build(HTTP.Status status) {
        return build(status, null);
    }

    public static ResponseData build(HTTP.Status status, Object data) {
        return build(status.value(), status.getReasonPhrase(), data);
    }

    public static ResponseData build(Integer code, String message, Object data) {
        return new ResponseData(code, message, data);
    }
}

在controller我们就可以直接使用它了:

1. 下面我们举个例子:

这是一个添加用户的方法,我们调用它的success,因为这里传入的是添加的用户的数据,所以它会默认匹配到我们的参数为data的success方法,code默认为200,message默认为"request successed" 。