统一响应模板

简介: 统一响应模板

2021年03月11日 16:19

package com.fedtech.common.util.result;
import cn.hutool.json.JSONUtil;
import com.fedtech.common.constants.Result.ResponseCodeConstants;
import lombok.Data;
import org.apache.commons.lang3.StringUtils;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
/**
 * 全局统一响应模板
 *
 * @author <a href="mailto:njpkhuan@gmail.com">huan</a>
 * @version 1.0.0
 * @date 2021/1/9
 */
@SuppressWarnings("rawtypes")
@Data
public class R<T> implements Serializable {
    private static final long serialVersionUID = 6426193889384507066L;
    private Boolean status;
    private Integer code;
    private String message;
    private boolean jsonData = Boolean.FALSE;
    private Map<String, Object> data = new HashMap<>();
    private R() {}
    public static R success() {
        R r = new R();
        r.setStatus(true);
        r.setCode(ResponseCodeConstants.SUCCESS);
        r.setMessage("请求成功!");
        return r;
    }
    public static <T> R<T> success(String message) {
        R<T> r = new R<>();
        r.setStatus(true);
        r.setCode(ResponseCodeConstants.SUCCESS);
        r.setMessage(message);
        return r;
    }
    public static <T> R<T> fail() {
        R<T> r = new R<>();
        r.setStatus(false);
        r.setCode(ResponseCodeConstants.ERROR);
        r.setMessage("请求失败!");
        return r;
    }
    public static <T> R<T> fail(String key, Object value) {
        R<T> r = new R<>();
        r.setStatus(false);
        r.data.put(key, value);
        r.setCode(ResponseCodeConstants.ERROR);
        r.setMessage("请求失败!");
        return r;
    }
    public static <T> R<T> fail(String message) {
        R<T> r = new R<>();
        r.setStatus(false);
        r.setCode(ResponseCodeConstants.ERROR);
        r.setMessage(message);
        return r;
    }
    public static <T> R<T> fail(String message, Integer code) {
        R<T> r = new R<>();
        r.setStatus(false);
        r.setCode(code);
        r.setMessage(message);
        return r;
    }
    public static <T> R<T> successWithJsonData(T data) {
        R<T> r = new R<>();
        r.setStatus(Boolean.TRUE);
        r.setCode(ResponseCodeConstants.SUCCESS);
        r.data.put("data", data);
        r.jsonData = Boolean.TRUE;
        return r;
    }
    public static <T> R<T> successWithData(T data) {
        R<T> r = new R<>();
        r.setStatus(Boolean.TRUE);
        r.setCode(ResponseCodeConstants.SUCCESS);
        r.data.put("data", data);
        return r;
    }
    public static <T> R<T> failedWithJsonData(T data) {
        R<T> r = new R<>();
        r.setStatus(Boolean.FALSE);
        r.setCode(ResponseCodeConstants.ERROR);
        r.data.put("data", data);
        r.jsonData = Boolean.TRUE;
        return r;
    }
    public static <T> R<T> failedWithData(T data) {
        R<T> r = new R<>();
        r.setStatus(Boolean.FALSE);
        r.setCode(ResponseCodeConstants.ERROR);
        r.data.put("data", data);
        return r;
    }
    public R message(String message) {
        setMessage(message);
        return this;
    }
    public R code(Integer code) {
        setCode(code);
        return this;
    }
    public R data(String key, Object value) {
        data.put(key, value);
        return this;
    }
    public R data(Map<String, Object> map) {
        setData(map);
        return this;
    }
    public String toJson() {
        if (jsonData) {
            String tem = String.valueOf(data.get("data"));
            data.remove("data");
            String jsonStr = JSONUtil.toJsonPrettyStr(this);
            return StringUtils.replace(jsonStr, jsonStr.substring(30, 38), tem);
        }
        return JSONUtil.toJsonPrettyStr(this);
    }
}

本文由博客群发一文多发等运营工具平台 OpenWrite 发布

相关文章
|
8月前
|
JSON 缓存 前端开发
API接口,实现统一格式
API接口,实现统一格式
53 1
|
5月前
|
Java Sentinel Spring
网关修改响应码,拯救业务不规范设计
本文探讨了在一个未遵循HTTP标准规范的项目中遇到的问题及解决方案。
|
6月前
|
开发框架 JavaScript 前端开发
基于Vue的工作流项目模块中,使用动态组件的方式统一呈现不同表单数据的处理方式
基于Vue的工作流项目模块中,使用动态组件的方式统一呈现不同表单数据的处理方式
在自定义服务器框架中处理 GET 请求
在自定义服务器框架中处理 GET 请求
|
8月前
|
前端开发
开发指南002-前后端信息交互规范-请求类
请求类由org.qlm.io.vo.RequestInfo定义:
|
8月前
|
JSON 前端开发 Java
统一数据返回格式 及 可能遇到的问题;统一异常处理
统一数据返回格式需要创建一个新类并使其实现ResponseBodyAdvice 接口并重写里面的方法,然后给当前类加上@ControllerAdvice注解。 实际应用时还有几个问题: 问题一:重复打包 问题二:ClassCastException: com.example.Spring_demo.Resp cannot be cast to java.lang.String 统一异常处理需要使用两个注解@ExceptionHandler@ControllerAdvice
115 2
|
8月前
|
前端开发
开发指南002-前后端信息交互规范-返回类ResponseResult
返回类有两个,一般返回类ResponseResult和分页返回类PageResult,本篇介绍ResponseResult
|
8月前
|
前端开发
|
搜索推荐 前端开发
【接口请求配置】axios 某个单独接口的个性化配置
【接口请求配置】axios 某个单独接口的个性化配置
243 0
|
JSON 小程序 数据库
借助云开发实现小程序列表页(包含json数据的请求和解析)
借助云开发实现小程序列表页(包含json数据的请求和解析)
303 0