项目之如何创建一个高复用的服务响应对象

在最开始做项目的时候,往往没有注意到服务响应对象复用的的问题,在web开发中,现在比较流行的是从控制层往前台返回json格式的数据,而若每次的返回都设计一个类的话,不方便使用的同时也会显得很臃肿,不仅代码不够规范和美观,而且对于开发人员来说也很痛苦,所以后来我改进过后创建了一个高复用的服务响应对象:

//保证json序列化的时候,如果是null的对象,key也会消失
@JsonInclude(JsonInclude.Include.NON_NULL)
public class ServerResponse<T> {
    //响应状态
    private Integer status;
    //提示信息
    private String msg;
    //具体内容,泛型的数据类型 可以是空,字符串,对象,List等等
    private T data;

    private ServerResponse(int status)
    {
        this.status=status;
    }
    private ServerResponse(int status,T data)
    {
        this.status=status;
        this.data=data;
    }
    private ServerResponse(int status,String msg,T data)
    {
        this.status=status;
        this.data=data;
        this.msg=msg;
    }
    private ServerResponse(int status,String msg)
    {
        this.status=status;
        this.msg=msg;
    }
    @JsonIgnore
    //因为下面的方法是public的,所以Json序列化过后会返回在给前端的结果中,所以加了@JsonIgnore就序列化它了
    public boolean isSuccess(){
        return this.status== ResponseCode.SUCCESS.getCode();
    }
    public static <T> ServerResponse<T> createBySuccess()
    {
        return new ServerResponse<T>(ResponseCode.SUCCESS.getCode());
    }
    public static  <T>ServerResponse<T> createBySuccessMessage(String msg)
    {
        return new ServerResponse<T>(ResponseCode.SUCCESS.getCode(),msg);
    }
    public static  <T>ServerResponse<T> createBySuccess(T data)
    {
        return new ServerResponse<T>(ResponseCode.SUCCESS.getCode(),data);
    }
    public static  <T>ServerResponse<T> createBySuccessMessage(String msg,T data)
    {
        return new ServerResponse<T>(ResponseCode.SUCCESS.getCode(),msg,data);
    }
    public static <T> ServerResponse<T> createByError()
    {
        return new ServerResponse<T>(ResponseCode.ERROR.getCode(),ResponseCode.ERROR.getMsg());
    }
    public static <T> ServerResponse<T> createByErrorMessage(String message){
        return new ServerResponse<T>(ResponseCode.ERROR.getCode(),message);
    }
    public static <T> ServerResponse<T> createByErrorCodeMessage(Integer errCode,String msg)
    {
        return new ServerResponse<T>(errCode,msg);
    }
    
    public Integer getStatus() {
        return status;
    }
    public void setStatus(Integer status) {
        this.status = status;
    }
    public String getMsg() {
        return msg;
    }

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

    public T getData() {
        return data;
    }

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

表示该属性或者方法不参与序列化的进行,不会出现在序列化的结果中

@JsonInclude(JsonInclude.Include.NON_NULL)

表示当我的某个属性为空的时候,不出现序列化的结果中,并且我还列举了一些同等级的情况如下:


//如果放在类上边,那对这个类的全部属性起作用


//Include.Include.ALWAYS 默认
//Include.NON_DEFAULT 属性为默认值不序列化
//Include.NON_EMPTY 属性为 空(“”) 或者为 NULL 都不序列化

//Include.NON_NULL 属性为NULL 不序列化 。


这样我们每一个返回前端的对象都可以是这个ServerResponse对象,只需要在使用的时候调用不同的方法并赋值即可

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值