java封装一个通用的REST API 返回结果

REST API 返回结果


import com.fasterxml.jackson.annotation.JsonFormat;
import com.common.enums.ExceptionCode;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.experimental.Accessors;
import org.apache.commons.lang3.StringUtils;

import java.io.Serializable;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

/**
 * REST API 返回结果
 */
@Data
@Accessors(chain = true)
@Builder
@AllArgsConstructor
public class ApiResult<T> implements Serializable {
	private static final long serialVersionUID = 8004487252556526569L;

	/**
     * 响应码
     */
    private int code;

    /**
     * 是否成功
     */
    private boolean success;

    /**
     * 响应消息
     */
    private String message;

    /**
     * 响应数据
     */
    private T data;

    /**
     * 响应时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date time;

    public ApiResult() {
        time  = new Date();
    }

    public static ApiResult<Boolean> result(boolean flag){
        if (flag){
            return ok();
        }
        return fail();
    }

    public static ApiResult<Boolean> result(ExceptionCode apiCode){
        return result(apiCode,null);
    }

    public static <T> ApiResult<T> result(ExceptionCode apiCode,T data){
        return result(apiCode,null,data);
    }

    public static <T> ApiResult<T> result(ExceptionCode apiCode,String message,T data){
        boolean success = false;
        if (apiCode.getCode() == ExceptionCode.SUCCESS.getCode()){
            success = true;
        }
        if (StringUtils.isBlank(message)){
            message = apiCode.getMessage();
        }
        ApiResult result= (ApiResult<T>) ApiResult.builder()
                .code(apiCode.getCode())
                .message(message)
                .data(data)
                .success(success)
                .time(new Date())
                .build();
        return result;
    }

    public static <T> ApiResult<T> ok(){
        return ok(null);
    }

    public static <T> ApiResult<T> ok(T data){
        return result(ExceptionCode.SUCCESS,data);
    }

    public static <T> ApiResult<T> ok(T data,String message){
        return result(ExceptionCode.SUCCESS,message,data);
    }

    public static ApiResult<Map<String,Object>> okMap(String key,Object value){
        Map<String,Object> map = new HashMap<>(1);
        map.put(key,value);
        return ok(map);
    }

    public static ApiResult<Boolean> fail(ExceptionCode apiCode){
        return result(apiCode,null);
    }

    public static <T> ApiResult<T> fail(String message){
        return result(ExceptionCode.FAIL,message,null);
    }

    public static <T> ApiResult<T> fail(ExceptionCode apiCode,T data){
        if (ExceptionCode.SUCCESS == apiCode){
            throw new RuntimeException("失败结果状态码不能为" + ExceptionCode.SUCCESS.getCode());
        }
        return result(apiCode,data);
    }

    public static  ApiResult<String> fail(Integer errorCode,String message){
        return new ApiResult<String>()
                .setSuccess(false)
                .setCode(errorCode)
                .setMessage(message);
    }

    public static ApiResult<Map<String,Object>> fail(String key,Object value){
        Map<String,Object> map = new HashMap<>(1);
        map.put(key,value);
        return result(ExceptionCode.FAIL,map);
    }

    public static ApiResult<Boolean> fail() {
        return fail(ExceptionCode.FAIL);
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值