统一接口返回类的意义
基于java的前后端分离项目中,前端获取后端controller层接口返回的JSON格式的数据,并展示出来。通常为了提高代码质量,会将后端返回的数据进行统一的格式处理。
创建枚举类
package com.itbaizhan.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
@Getter
@AllArgsConstructor
public enum CodeEnum {
// 正常
SUCCESS(200, "OK"),
// 系统异常
SYSTEM_ERROR(500, "系统异常"),
// 业务异常
PARAMETER_ERROR(601, "参数异常"),
LOGIN_ERROR(602, "登录异常");
private final Integer code;
private final String message;
}
创建统一返回类
package com.itbaizhan.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
@Data
@AllArgsConstructor
public class BaseResult<T> {
// 状态码(成功:200 失败:其他)
private Integer code;
// 提示消息
private String message;
// 返回数据
private T data;
// 构建成功结果
public static <T> BaseResult<T> ok() {
return new BaseResult(CodeEnum.SUCCESS.getCode(), CodeEnum.SUCCESS.getMessage(), null);
}
// 构建成功结果
public static <T> BaseResult<T> ok(T data) {
return new BaseResult(CodeEnum.SUCCESS.getCode(), CodeEnum.SUCCESS.getMessage(), data);
}
// 构建异常结果
public static <T> BaseResult<T> error(CodeEnum codeEnum) {
return new BaseResult(codeEnum.getCode(), codeEnum.getMessage(),null);
}
}
修改TestController
修改test方法,返回统一结果
package com.itbaizhan.controller;
import com.itbaizhan.vo.BaseResult;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 测试
*/
@RestController
public class TestController {
@GetMapping("/test")
public BaseResult test(){
return BaseResult.ok("hello payment");
}
}