WEB项目中的通用返回类

WEB项目中的通用返回类

实现步骤
1.新建一个枚举类型,如下:
斜体样式枚举类型中存放着返回状态码和返回的消息,
这样做可以更加方便的添加新的返回状态码和返回信息。
public enum ResultCode{
    SUCCESS(200,"操作成功"),
    FAILED(500,"操作失败"),
    VALIDATE_FAILED(404, "参数检验失败"),
    UNAUTHORIZED(401, "暂未登录或token已经过期"),
    FORBIDDEN(403, "没有相关权限");

    private long code;
    private String message;
    private ResultCode(long code, String message) {
        this.code = code;
        this.message = message;
    }
    public long getCode() {
        return code;
    }

    public String getMessage() {
        return message;
    }

}
2.新建一个通用返回类,如下:
建立此类的两个目的:
1.用来将返回状态码、返回信息和数据进行包装,将三者组装在一起
2.此类又是三个信息组装完成后的实体
注:自行包装后又将自己交出去
//封装的返回数据类型不确定,故使用泛型
public class CommonResult<T> {
	//作为通用的返回类,故应包含三部分
    private long code;//返回状态码
    private String message;//返回信息
    private T data;//返回数据,将要给客户端的数据

	/*此类将会作为包装后的数据直接返回给客户端,用构造方法来将
	三个元素组装成一个对象*/
    protected CommonResult(long code,String message,T data){
        this.code=code;
        this.message=message;
        this.data=data;
    }

    @Override
    public String toString() {
        return "CommonResult{" +
                "code=" + code +
                ", message='" + message + '\'' +
                ", data=" + data +
                '}';
    }

	/*以下为静态方法,作用是利用本类的构造方法将三个元素组装在一起
	生成一个本类对象并返回,根据不同的响应状态自行调用不同的方法,可以利用
	上面写好的枚举类型填充返回状态码和返回信息,也可以自行传入返回状态码和
	返回信息*/
    /**
     * 成功返回的结果
     * @param data  获取的数据
     */
    public static <T> CommonResult success(T data){
        return new CommonResult(ResultCode.SUCCESS.getCode(),ResultCode.SUCCESS.getMessage(),data);
    }

    /**
     *
     * @param message   自定义提示信息
     * @param data  获取的数据
     */
    public static <T> CommonResult success(String message,T data){
        return new CommonResult(ResultCode.SUCCESS.getCode(),message,data);
    }

    /**
     * 失败返回结果
     */
    public static <T> CommonResult failed(){
        return new CommonResult(ResultCode.FAILED.getCode(),ResultCode.FAILED.getMessage(),null);
    }

    /**
     * 失败返回结果
     * @param message   自定义信息
     */
    public static <T> CommonResult failed(String message){
        return new CommonResult(ResultCode.FAILED.getCode(),message,null);
    }

    /**
     * 参数验证失败返回结果
     */
    public static <T> CommonResult validateFailed(){
        return new CommonResult(ResultCode.VALIDATE_FAILED.getCode(),ResultCode.VALIDATE_FAILED.getMessage(),null);
    }

    /**
     * 参数验证失败返回结果
     * @param message   自定义提示信息
     */
    public static <T> CommonResult validateFailed(String message){
        return new CommonResult(ResultCode.VALIDATE_FAILED.getCode(),message,null);
    }

    /**
     * 未授权返回结果
     *
     */
    public static <T> CommonResult forbidden(T data){
        return new CommonResult(ResultCode.FORBIDDEN.getCode(),ResultCode.FORBIDDEN.getMessage(),data);
    }

    /**
     * 未登录返回结果
     * @param data  返回的数据
     */
    public static <T> CommonResult unauthorized(T data){
        return new CommonResult(ResultCode.UNAUTHORIZED.getCode(),ResultCode.UNAUTHORIZED.getMessage(),null);
    }

    public long getCode() {
        return code;
    }

    public void setCode(long 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;
    }
}
结果演示:
1.客户端发送请求
2.controller接收请求
3.service处理业务,将返回数据叫给controller
4.controller调用通用返回类静态方法组装:返回状态码、返回信息和返回数据
5.将组装后的通用返回类对象返回给客户端
@RequestMapping("/{id}")
@ResponseBody
//将通用返回类作为返回值
public CommonResult getBrand(@PathVariable("id") long id){
    CommonResult commonResult;
    PmsBrand pmsBrand = pmsBrandService.getBrand(id);
    if(pmsBrand==null){
    	//查询失败调用静态方法failed
        commonResult = CommonResult.failed();
    }else{
    	//查询成功调用success方法,传入返回数据进行组装
        commonResult = CommonResult.success(pmsBrand);
    }
    return commonResult;
}
请求成功
{
    "code": 200,
    "message": "操作成功",
    "data": {
        "id": 1,
        "name": "万和",
        "firstLetter": "W",
        "sort": 0,
        "factoryStatus": 1,
        "showStatus": 1,
    }
}

你可能感兴趣的:(WEB项目中的通用返回类)