封装统一返回结果
Posted 伍妖捌
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了封装统一返回结果相关的知识,希望对你有一定的参考价值。
前言
目前,前后端分离的项目越来越多。如果项目采用前后端分离的方式去开发的话,后端只提供API接口,前端通过Ajax去调用接口。那么前后端需要提前定义好数据格式,为了减少沟通成本,需要封装一个统一返回结果的。
响应类
@Getter
//@ApiModel(value = "全局统一返回结果")
public class Result {
// @ApiModelProperty(value = "是否成功")
private Boolean success;
// @ApiModelProperty(value = "返回码")
private Integer code;
// @ApiModelProperty(value = "返回消息")
private String message;
// @ApiModelProperty(value = "返回数据")
private Object data;
private Result() {
}
private Result(ResultCode resultCode) {
this.success = resultCode.getSuccess();
this.code = resultCode.getCode();
this.message = resultCode.getMessage();
}
public static Result ok() {
return new Result(ResultCode.SUCCESS);
}
public static Result error() {
return new Result(ResultCode.UNKNOWN_ERROR);
}
public static Result error(ResultCode resultCode) {
return new Result(resultCode);
}
public Result code(Integer code) {
this.code = code;
return this;
}
public Result message(String message) {
this.message = message;
return this;
}
public Result data(Object obj) {
this.data = obj;
return this;
}
}
响应码
@Getter
public enum ResultCode {
SUCCESS(true, 2000, "成功"),
UNKNOWN_ERROR(false, 4000, "未知错误"),
BAD_CREDENTIALS(false, 3001, "用户名或密码输入错误!请重新输入!"),
CREDENTIALS_EXPIRED(false, 3002, "密码过期,请联系管理员!"),
ACCOUNT_EXPIRED(false, 3003, "账户过期,请联系管理员!"),
ACCOUNT_LOCKED(false, 3004, "账户被锁定,请联系管理员!"),
ACCOUNT_DISABLED(false, 3005, "账户被禁用,请联系管理员!"),
EXCEED_MAX_SESSION(false, 3006, "您的账号已在别的地方登录,不允许重复登录!"),
SMS_SEND_ERROR(false, 5000, "短信发送失败");
private Boolean success;
private Integer code;
private String message;
ResultCode(Boolean success, Integer code, String message) {
this.success = success;
this.code = code;
this.message = message;
}
}
依赖包
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
</dependency>
使用
@GetMapping("code/sms")
public Result smsCode(HttpServletRequest request, @RequestParam String mobile) {
// 1.生成手机验证码
String code = RandomStringUtils.randomNumeric(4);
// 2.存放到session中
request.getSession().setAttribute(Constant.SMS_CODE, code);
// 3.发送手机验证码
smsService.sendSms(mobile, code);
// Result.ok() 默认成功,message = "成功"
// Result.ok().data(这个可以传入对象) 默认成功,message = "成功",带响应数据
// Result.error() 默认失败,message = "未知错误"
// Result.error().message("短信发送失败") 自定义提示信息
// Result.error(ResultCode.SMS_SEND_ERROR) 可传入自定义枚举类
return Result.ok().message("短信发送成功");
}
以上是关于封装统一返回结果的主要内容,如果未能解决你的问题,请参考以下文章