统一API响应结果封装

Java中接口返回结果只需要一种封装就够,就是数据返回json格式,或者对象格式,其中,接口返回中包含状态码,返回状态信息,和数据信息。其他的不需要写太多花里胡哨的东西。

API接口返回数据封装


import java.io.Serializable;
 
public class ResponseData<T> implements Serializable {

    /**
	 * 
	 */
	private static final long serialVersionUID = 7098362967623367826L;

	/**
     * 响应状态码
     */
    private Integer code;

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

    /**
     * 响应对象
     */
    private T data;

    /** 是否加密返回参数*/
    private boolean encrypt;

    public Integer getCode() {
        return code;
    }

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

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }


    public T getData() {
        return data;
    }

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

    public static <T> ResponseData<T> success() {
        return success(ResponseCode.SUCCESS);
    }

    public static <T> ResponseData<T> success(ResponseCode code) {
        return success(code, null);
    }

    public static <T> ResponseData<T> success(T object) {
        return success(ResponseCode.SUCCESS, object);
    }

    public static <T> ResponseData<T> success(ResponseCode code, T object) {
        return success(code.getCode(), code.getMessage(), object);
    }

    public static <T> ResponseData<T> success(Integer code, String message, T data) {
        ResponseData<T> response = new ResponseData<>();
        response.setCode(code);
        response.setMessage(message);
        response.setData(data);
        return response;
    }

    public static <T> ResponseData<T> error() {
        return error(ResponseCode.FAILED);
    }

    public static <T> ResponseData<T> error(ResponseCode code) {
        return error(code, null);
    }

    public static <T> ResponseData<T> error(String message) {
        return error(ResponseCode.FAILED.getCode(), message, null);
    }

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

    public static <T> ResponseData<T> error(ResponseCode code, T data) {
        return error(code.getCode(), code.getMessage(), data);
    }

    public static <T> ResponseData<T> error(Integer code, String message, T data) {
        ResponseData<T> response = new ResponseData<>();
        response.setCode(code);
        response.setMessage(message);
        response.setData(data);
        return response;
    }


    public boolean isEncrypt() {
        return encrypt;
    }

    public void setEncrypt(boolean encrypt) {
        this.encrypt = encrypt;
    }
}

在controller中的使用

	/**
	 * 查询所有小程序配置字典列表
	 * @param  
	 * @return
	 */
	@ApiOperation(value = "查询所有小程序配置字典列表", notes = "查询所有小程序配置字典列表")
    @PostMapping("searchAll")
    public ResponseData<List<MAppConf>> searchAll() {
		List<MAppConf> mAppConfList = mAppConfService.searchAll();
    	if(!CtgUtils.isCollectionNull(mAppConfList)) {
        	return  ResponseData.success(mAppConfList);
    	}else {
    		log.info(MAppConfConstant.NOT_EXIST);
    		return  ResponseData.success(mAppConfList);
    	}
    }

使用原理

主要使用到了Java中的泛型。

1. 定义

泛型,即“参数化类型”,是一种将类型作为参数传递给类、接口或方法的技术。通过泛型,可以在编译时期检查数据类型的合法性,从而避免运行时类型转换错误,提高了程序的稳定性和安全性。

2. 好处

  • 类型安全:在编译时期就能检查到类型错误,而不是在运行时。
  • 消除强制类型转换:泛型提供了编译时期的类型检查,因此在大多数情况下,不需要进行强制类型转换。
  • 提高代码重用性:可以编写更加通用的代码,如集合类(List、Set、Map)等,适用于各种数据类型。

在泛型中,常见的字母表示法用于表示类型参数,它们没有固定含义,但在惯例中被广泛使用:

  • T:表示任意类型(Type)。
  • E:表示元素(Element),通常用于表示集合中的元素类型。
  • K:表示键(Key),通常用于表示键值对中的键的类型。
  • V:表示值(Value),通常用于表示键值对中的值的类型。
  • N:表示数字(Number),通常用于表示数字类型,如整数、浮点数等。
  • S, U, V 等:用于表示第二、第三、第四个泛型类型参数,这些字母并没有固定的含义,但在代码中的使用已经成为了一种约定俗成的规范。
  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
超好用的统一API响应结果封装是指在开发API接口时,通过统一封装格式对接口的响应结果进行处理和返回。这种封装能够提供更加简洁、可靠且友好的API响应结果,方便开发人员进行接口开发和调用。 首先,通过统一API响应结果封装,可以将不同接口的响应结果统一为相同的数据结构,比如常用的JSON格式。这样,对于调用者来说,无论调用哪个接口,返回的结果格式都是一致的,能够减少对不同接口响应结果格式的处理和解析。 其次,统一API响应结果封装还能够提供更加清晰的错误信息。封装中可以定义错误码和错误信息,根据不同的错误情况返回相应的错误码和错误信息。调用者可以根据错误码进行相应的处理,从而更加方便地定位和解决问题。 此外,封装还可以提供附加信息的返回。比如,可以在响应结果中附加一些额外的信息,比如请求的状态、请求的时间等。这些附加信息能够帮助调用者更好地了解接口的调用情况和性能。 总的来说,超好用的统一API响应结果封装可以减少开发人员的工作量,提高开发效率,同时也能够提供更好的用户体验和错误处理能力。开发者只需关注业务逻辑的实现,而不用过多关注接口的响应结果和格式。这种封装能够使接口开发更加便捷、易用且可维护,是开发API接口时的重要工具。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奋力向前123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值