JAVA WEB开发中REST接口统一返回数据工具类封装

前言

日常JAVA Web项目开发过程中,一般都是基于HTTP+REST风格,Controller接口返回JSON格式数据到前端,前端获取JSON后展示在前端,为了项目的返回数据格式统一,这里总结一下常用Web开发过程中REST接口统一返回数据工具类封装。

一、工具类一RestResponse

  • RestResponse(对内Rest接口-推荐)
package com.example.demo.result;

import java.io.Serializable;

/**
 * REST接口统一返回数据工具类封装RestResponse
 * @param <T>
 */
public class RestResponse<T> implements Serializable {

    private static final long serialVersionUID = 3728877563912075885L;

    private int code;
    private String msg;
    private T data;

    public RestResponse(){

    }

    public RestResponse(int code, String message, T data) {
        this.code = code;
        this.setMsg(message);
        this.data = data;
    }

    public RestResponse(int code, T data) {
        this.code = code;
        this.data = data;
    }

    public RestResponse(int code, String message) {
        this.code = code;
        this.setMsg(message);
    }
 
    /**
     * 成功时-返回data
     * @param <T>
     * @return
     */
    public static <T> RestResponse<T> success(T data){
        return new RestResponse<T>(200, null, data);
    }

    /**
     * 成功-不返回data
     * @param <T>
     * @return
     */
    public static <T> RestResponse<T> success(String msg){
        return new RestResponse<T>(200, msg);
    }

    /**
     * 成功-返回data+msg
     * @param <T>
     * @return
     */
    public static <T> RestResponse<T> success(String msg, T data){
        return new RestResponse<T>(200, msg, data);
    }
 
    /**
     * 失败
     * @param <T>
     * @return
     */
    public static <T> RestResponse<T> fail(String msg){
        return new RestResponse<T>(500, msg,null);
    }

    /**
     * 失败-code
     * @param <T>
     * @return
     */
    public static <T> RestResponse<T> fail(int code, String msg){
        return new RestResponse<T>(code, msg,null);
    }

 
    public int getCode() {
        return code;
    }

    public String getMsg() {
        return msg;
    }
 
 
    public T getData() {
        return data;
    }

    public void setCode(int code) {
        this.code = code;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public void setData(T data) {
        this.data = data;
    }

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

二、工具类二RpcResponse

  • RpcResponse(对外Rpc接口)
package com.example.oss.result;

import lombok.Builder;
import lombok.Data;
import lombok.experimental.Accessors;

import java.io.Serializable;

/**
 * @desc:
 * @author: cao_wencao
 * @date: 2020-11-06 17:04
 */
@Data
@Accessors(chain = true)
@Builder
public class RpcResponse<T> implements Serializable {
    public static final int CODE_200 = 200;

    public static final int CODE_500 = 500;
    private static final long serialVersionUID = -1559957698621135646L;


    /**
     * 消息 CODE_200
     */
    private int code = CODE_500;

    /**
     * 信息
     */
    private String message;

    /**
     * 数据
     */
    private Object data;


    /**
     * Instantiates a new Api result.
     */
    public RestResponse() {
        super();
    }


    /**
     * Instantiates a new Api result.
     *
     * @param code    the code
     * @param message the message
     * @param data    the data
     */
    public RpcResponse(int code, String message, Object data) {
        this.code = code;
        this.message = message;
        this.data = data;
    }

    /**
     * Instantiates a new Api result.
     *
     * @param code    the code
     * @param message the message
     */
    public RpcResponse(int code, String message) {
        this(code, message, null);
    }


    /**
     * 错误
     *
     * @param message the message
     * @return api result
     */
    public static RpcResponse error(String message) {
        return new RpcResponse(CODE_500, message, null);
    }

    /**
     * 错误
     *
     * @param code    the code
     * @param message the message
     * @return api result
     */
    public static RpcResponse error(int code, String message) {
        return new RpcResponse(code, message);
    }

    /**
     * 成功
     *
     * @param message the message
     * @return api result
     */
    public static RpcResponse succee(String message) {
        return new RpcResponse(CODE_200, message);
    }

    /**
     * 成功
     *
     * @param data    the data
     * @param message the message
     * @return api result
     */
    public static RpcResponse succee(Object data, String message) {
        return new RpcResponse(CODE_200, message, data);
    }

    /**
     * 成功
     *
     * @param data the data
     * @return api result
     */
    public RpcResponse success(Object data) {

        return new RpcResponse(CODE_200, null, data);
    }
}

三、工具类三RestResponse

  • RestResponse(对内Rest接口)
package com.example.oss.result;

import lombok.Builder;
import lombok.Data;
import lombok.experimental.Accessors;

import java.io.Serializable;

/**
 * @desc:
 * @author: cao_wencao
 * @date: 2020-11-06 17:04
 */
@Data
@Accessors(chain = true)
@Builder
public class RestResponse implements Serializable {
    public static final int CODE_200 = 200;

    public static final int CODE_500 = 500;
    private static final long serialVersionUID = -1559957698621135646L;


    /**
     * 消息 CODE_200
     */
    private int code = CODE_500;

    /**
     * 信息
     */
    private String message;

    /**
     * 数据
     */
    private Object data;


    /**
     * Instantiates a new Api result.
     */
    public RestResponse() {
        super();
    }


    /**
     * Instantiates a new Api result.
     *
     * @param code    the code
     * @param message the message
     * @param data    the data
     */
    public RestResponse(int code, String message, Object data) {
        this.code = code;
        this.message = message;
        this.data = data;
    }

    /**
     * Instantiates a new Api result.
     *
     * @param code    the code
     * @param message the message
     */
    public RestResponse(int code, String message) {
        this(code, message, null);
    }


    /**
     * 错误
     *
     * @param message the message
     * @return api result
     */
    public static RestResponse error(String message) {
        return new RestResponse(CODE_500, message, null);
    }

    /**
     * 错误
     *
     * @param code    the code
     * @param message the message
     * @return api result
     */
    public static RestResponse error(int code, String message) {
        return new RestResponse(code, message);
    }

    /**
     * 成功
     *
     * @param message the message
     * @return api result
     */
    public static RestResponse succee(String message) {
        return new RestResponse(CODE_200, message);
    }

    /**
     * 成功
     *
     * @param data    the data
     * @param message the message
     * @return api result
     */
    public static RestResponse succee(Object data, String message) {
        return new RestResponse(CODE_200, message, data);
    }

    /**
     * 成功
     *
     * @param data the data
     * @return api result
     */
    public RestResponse success(Object data) {

        return new RestResponse(CODE_200, null, data);
    }
}
Thinkingcao CSDN认证博客专家 Java Spring Boot 微服务
CSDN2019年度博客之星、博客专家,专注架构、Java、Spring、SpringBoot、SpringCloud、微服务、数据库、分布式、中间件、源码分析、JVM性能调优、K8S等领域
微信搜索公众号:「Thinking曹」,一个执着于架构的JAVA基层码农,每天带你学习新知识。
相关推荐
©️2020 CSDN 皮肤主题: 程序猿惹谁了 设计师:白松林 返回首页
实付 19.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值