自定义响应消息体

ResultEnum.java

定义一个枚举类来存储全局错误状态码和消息,方便后面管理修改

枚举类补充:

enum Test1{
  RED("1"),GREEN("2"),YELLOW("3");
	
	//方法中有参数的话,里面的参数也需要写
	private Test1(String name) {}
	
	//有抽象方法的话,需要实现该抽象方法
	//abstract void test();
	
}

//枚举底层就是这样的
class Test2{
	private Test2() {}
	public static final Test2 RED = new Test2();
	public static final Test2 GREEN = new Test2();
	public static final Test2 YELLOW = new Test2();
	
}
package com.xiaomin.springboot_shiro.enums;

/**
 * @author 晓敏
 * @create 2020-03-12 15:36
 * 全局错误状态码定义
 * 使用枚举来进行定义状态和消息
 */
public enum  ResultEnum {
    SUCCESS(200,"成功"),
    FEIFA(110,"非法操作"),
    ERROR(500,"出错"),;

    //响应业务状态
    private Integer status;
    //响应消息
    private String 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;
    }

    ResultEnum(Integer status, String msg) {
        this.status = status;
        this.msg = msg;
    }
}

注意:上面使用枚举类来定义全局错误相当于下面这个类

public class CodeMsg {

    private int code;
    private String msg;
    
    //通用的错误码
    public static CodeMsg SUCCESS = new CodeMsg(0, "success");
    public static CodeMsg SERVER_ERROR = new CodeMsg(500100, "服务端异常");
    public static CodeMsg BIND_ERROR = new CodeMsg(500101, "参数校验异常:%s");
    //登录模块 5002XX
    public static CodeMsg SESSION_ERROR = new CodeMsg(500210, "Session不存在或者已经失效");
    public static CodeMsg PASSWORD_EMPTY = new CodeMsg(500211, "登录密码不能为空");
    public static CodeMsg STUDENTID_EMPTY = new CodeMsg(500212, "学号不能为空");
    public static CodeMsg STUDENTID_ERROR = new CodeMsg(500213, "学号格式错误");
    public static CodeMsg STUDENTIDE_NOT_EXIST = new CodeMsg(500214, "学号不存在");
    public static CodeMsg PASSWORD_ERROR = new CodeMsg(500215, "密码错误");
    
    public int getCode() {
        return code;
    }


    public String getMsg() {
        return msg;
    }
    
    public CodeMsg fillArgs(Object... args) {
        int code = this.code;
        String message = String.format(this.msg, args);
        return new CodeMsg(code, message);
    }


    private CodeMsg(int code,String msg) {
        this.code = code;
        this.msg = msg;
    }

}

ResultVo.java

HTTP响应结果处理类

package com.xiaomin.login_redis.pojo.vo;

import com.xiaomin.login_redis.enums.ResultEnum;

/**
 * 响应结果处理类
 */
public class ResultVo<T> {
    //响应业务状态
    private Integer status;
    //响应业务消息
    private String msg;
    //响应业务数据
    private T data;
 
    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;
    }

    public ResultVo() {
    }
 
    public ResultVo(ResultEnum enums) {
        this.status = enums.getStatus();
        this.msg = enums.getMsg();
        this.data = data;
    }
}

ResultUtil.java

封装成工具类

package com.xiaomin.springboot_shiro.enums;

/**
 * @author jattxgt
 * @create 2020-03-12 21:19
 */
public class ResultUtil {

    /**
     *
     * @return 响应data为空的消息体
     */
    public static ResultVo success(){
        return success(null);
    }

    /**
     *响应成功的消息
     * @param object 响应data数据
     * @return
     */
    public static ResultVo success(Object object){
        ResultVo resultVo = new ResultVo();
        resultVo.setStatus(ResultEnum.SUCCESS.getStatus());
        resultVo.setMsg(ResultEnum.SUCCESS.getMsg());
        resultVo.setData(object);
        return resultVo;
    }

    /**
     *响应错误的消息
     * @param object 响应错误data数据
     * @return
     */
    public static ResultVo error(Object object){
        ResultVo resultVo = new ResultVo();
        resultVo.setStatus(ResultEnum.ERROR.getStatus());
        resultVo.setMsg(ResultEnum.ERROR.getMsg());
        resultVo.setData(object);
        return resultVo;
    }

    /**
     * 响应自定义构建消息体
     * @param resultEnum 响应的状态和消息
     * @param data 响应数据
     * @return
     */
    public static ResultVo build(ResultEnum resultEnum,Object data){
        ResultVo resultVo = new ResultVo();
        resultVo.setStatus(resultEnum.getStatus());
        resultVo.setMsg(resultEnum.getMsg());
        resultVo.setData(data);
        return resultVo;
    }
}

示 例:

@RequestMapping("/test")
    @ResponseBody
    public ResultVo test(){
        List<User> users = userMapper.selectList(null);
        //return ResultUtil.success(null);
        return ResultUtil.build(ResultEnum.FEIFA,null);
    }

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值