所有分类
  • 所有分类
  • 未分类

JavaWeb–封装公共响应值给前端

简介

本文介绍封装公共响应值给前端的方法。

为什么要封装公共响应值?

在实际开发中,后端给前端的响应值必须要有一层封装,封装里边有状态码、错误信息、接口数据等。前端会先判断状态码,如果是成功,则获取数据;如果是失败,直接奖错误信息提示给用户。

有了这个公共的响应值,前后端交互会变得统一,这样会很便捷高效,会减少很多问题。另一方面,这个公共响应值也会作为feign的公共响应,便于调用方统一解析。

封装响应值

package com.knife.common.entity;

import com.knife.common.constant.ResultCode;
import lombok.Data;

@Data
public class ResultWrapper<T> {
    private Boolean success = true;

    private Integer code;

    private T data;

    private String message;

    private ResultWrapper() {
    }

    public static <T> ResultWrapper<T> success() {
        return success(null);
    }

    public static <T> ResultWrapper<T> success(T data) {
        return assemble(ResultCode.SUCCESS.getCode(), true, data);
    }

    public static <T> ResultWrapper<T> error() {
        return error(null);
    }

    public static <T> ResultWrapper<T> error(T data) {
        return assemble(ResultCode.SYSTEM_FAILURE.getCode(), false, data);
    }

    public ResultWrapper<T> data(T data) {
        this.setData(data);
        return this;
    }

    public ResultWrapper<T> message(String message) {
        this.setMessage(message);
        return this;
    }

    public ResultWrapper<T> code(int code) {
        this.setCode(code);
        return this;
    }

    public static <T> ResultWrapper<T> assemble(int code, boolean success, T data) {
        ResultWrapper<T> resultWrapper = new ResultWrapper<>();
        resultWrapper.setCode(code);
        resultWrapper.setSuccess(success);
        resultWrapper.setData(data);

        return resultWrapper;
    }
}

用法:

return ResultWrapper.success(data);
return ResultWrapper.success(data).message("访问成功");
return ResultWrapper.error().message("访问失败");

结果状态码

import lombok.Getter;

@Getter
public enum ResultCode {
    SUCCESS(1000, "访问成功"),
    SYSTEM_FAILURE(1001, "系统异常"),
    ;

    private final int code;
    private final String description;

    ResultCode(int code, String description) {
        this.code = code;
        this.description = description;
    }
}
2

评论0

请先

显示验证码
没有账号?注册  忘记密码?

社交账号快速登录