统一响应结果分别了三个类: 结果集,构造器(工具类),响应状态码和消息枚举类
注意事项:
三个类应该放在同一个包下,Result不可以单独使用只能通过构造器,Result和ResultBuilder 都加了final关键字不可以被扩展
1.结果集
Result加了swagger注解,没有需要可以去除
package com.ms.auction.utils.respons;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
/**
* 统一API响应结果封装
* 不要单独使用Result会编译出错,使用ResultBuilder方法调用 Result为返回
*
* @author 安能
* @date 2019年6月24日10:56:38
*/
@Builder(access = AccessLevel.MODULE)
@EqualsAndHashCode()
@AllArgsConstructor(access = AccessLevel.PRIVATE)
@Getter
@ApiModel(value = "Result对象", description = "统一响应")
public final class Result<T> {
/**
* 状态码
*/
@ApiModelProperty(value = "状态码")
private int code;
/**
* 响应消息
*/
@ApiModelProperty(value = "响应消息")
private String message;
/**
* 响应数据
*/
@ApiModelProperty(value = "响应数据")
private T data;
}
2.枚举类
package com.ms.auction.utils.respons;
import lombok.Getter;
import lombok.Setter;
/**
* 响应码枚举,参考HTTP状态码的语义
*
* @author 安能
* @date 2019年6月25日10:15:00
*/
public enum ResultEnum {
//**********************参考HTTP状态码**********************
/**
* 成功
*/
SUCCESS(200, "SUCCESS"),
/**
* 请求失败! 客户端请求的语法错误,服务器无法理解
*/
FAIL(400, "请求失败!"),
/**
* 未认证(签名错误) 请求要求用户的身份认证
*/
UNAUTHORIZED(401, "未认证!"),
/**
* <p>请求错误,拒绝访问请求错误,拒绝访问!</p>
* <p>服务器理解请求客户端的请求,但是拒绝执行此请求</p>
*/
FORBIDDEN(403, "请求错误,拒绝访问!"),
/**
* 接口不存在 服务器无法根据客户端的请求找到资源(网页)。通过此代码,网站设计人员可设置"您所请求的资源无法找到"的个性页面
*/
NOT_FOUND(404, "接口不存在!"),
/**
* 资源不存在 客户端请求的资源已经不存在。410不同于404,如果资源以前有现在被永久删除了可使用410代码,网站设计人员可通过301代码指定资源的新位置
*/
GONE(410, "资源不存在!"),
/**
* 参数错误,缺少必要的参数服务器无法根据客户端请求的内容特性完成请求
*/
NOT_ACCEPTABLE(406, "参数错误,缺少必要的参数!"),
/**
* 服务器内部错误
*/
INTERNAL_SERVER_ERROR(500, "服务器错误!"),
//**********************自定义状态码**********************
/**
* 下单委托成功
*/
TRADE_ORDER_INSERT_SUCCESS(6000, "下单委托成功"),
/**
* 下单委托失败
*/
TRADE_ORDER_INSERT_ERROR(6001, "下单委托失败");
/**
* 状态码
*/
@Getter
@Setter
private int code;
/**
* 请求消息
*/
@Getter
@Setter
private String message;
ResultEnum(int code, String message) {
this.code = code;
this.message = message;
}
}
3.构造器
package com.ms.auction.utils.respons;
/**
* <p>
* 统一响应类
* </p>
*
* @author 安能
* @date 2019年6月24日09:56:06
*/
public final class ResultBuilder {
public ResultBuilder() {
}
/**
* 返回成功消息
*
* @return 成功消息
*/
public static Result success() {
return Result.builder()
.code(ResultEnum.SUCCESS.getCode())
.message(ResultEnum.SUCCESS.getMessage())
.build();
}
/**
* 返回成功消息
*
* @param message 返回内容
* @return 成功消息
*/
public static <T> Result<T> success(String message) {
return Result.<T>builder()
.code(ResultEnum.SUCCESS.getCode())
.message(message)
.build();
}
/**
* 返回成功消息
*
* @param data 数据对象
* @return 成功消息
*/
public static <T> Result<T> success(T data) {
return Result.<T>builder()
.code(ResultEnum.SUCCESS.getCode())
.message(ResultEnum.SUCCESS.getMessage())
.data(data)
.build();
}
/**
* 返回成功消息
*
* @param resultEnum 状态码,返回内容
* @return 成功消息
*/
public static <T> Result<T> success(ResultEnum resultEnum) {
return Result.<T>builder()
.code(resultEnum.getCode())
.message(resultEnum.getMessage())
.build();
}
/**
* 返回成功消息
*
* @param resultEnum 状态码,返回内容
* @param data 数据对象
* @return 成功消息
*/
public static <T> Result<T> success(ResultEnum resultEnum, T data) {
return Result.<T>builder()
.code(resultEnum.getCode())
.message(resultEnum.getMessage())
.data(data)
.build();
}
/**
* 返回错误消息
*
* @return 错误消息
*/
public static Result errorInfo() {
return Result.builder()
.code(ResultEnum.FAIL.getCode())
.message(ResultEnum.FAIL.getMessage())
.build();
}
/* *//**
* 返回错误消息
*
* @param message 返回内容
* @return 错误消息
*//*
public static Result errorInfo(String message) {
return Result.builder()
.code(ResultEnum.FAIL.getCode())
.message(message)
.build();
}
*//**
* 自定义错误返回错误消息
*
* @param resultCode 状态码
* @param message 返回内容
* @return 错误消息
*//*
public static Result errorInfo(int resultCode, String message) {
return Result.builder()
.code(resultCode)
.message(message)
.build();
}*/
/**
* 根据枚举返回错误消息
*
* @param resultEnum 状态码 返回内容
* @return 错误消息
*/
public static Result errorInfo(ResultEnum resultEnum) {
return Result.builder()
.code(resultEnum.getCode())
.message(resultEnum.getMessage())
.build();
}
/**
* 自定义错误返回错误消息
*
* @param resultEnum 状态码 返回内容
* @param data 返回的数据
* @return 错误消息
*/
public static <T> Result<T> errorInfo(ResultEnum resultEnum, T data) {
return Result.<T>builder()
.code(resultEnum.getCode())
.message(resultEnum.getMessage())
.data(data)
.build();
}
}