1 摘要
REST 风格已经成为 WEB 开发的主流趋势,本文将分享作者自己在项目中使用的java后台 REST API 接口封装类。
核心代码
2.1 Swagger Maven 依赖
Swagger 作为可视化接口测试工具,根据代码自动生成接口文档,方便用户测试,所以可以集成到项目中
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
2.2 接口返回结果封装
com.ljq.demo.springboot.rest.common.api.ApiResult.java
package com.ljq.demo.springboot.rest.common.api;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.Map;
/**
* @Description: 接口返回结果封装
* @Author: junqiang.lu
* @Date: 2019/3/26
*/
@Data
@ApiModel(value = "接口返回结果")
public class ApiResult<T> implements Serializable {
private static final long serialVersionUID = -2953545018812382877L;
/**
* 返回码,200 正常
*/
@ApiModelProperty(value = "返回码,200 正常", name = "code")
private int code = 200;
/**
* 返回信息
*/
@ApiModelProperty(value = "返回信息", name = "msg")
private String msg = "成功";
/**
* 返回数据
*/
@ApiModelProperty(value = "返回数据对象", name = "data")
private T data;
/**
* 附加数据
*/
@ApiModelProperty(value = "附加数据", name = "extraData")
private Map<String, Object> extraData;
/**
* 系统当前时间
*/
@ApiModelProperty(value = "服务器系统时间,时间戳(精确到毫秒)", name = "timestamp")
private Long timestamp = System.currentTimeMillis();
/**
* 获取成功状态结果
*
* @return
*/
public static ApiResult success() {
return success(null, null);
}
/**
* 获取成功状态结果
*
* @param data 返回数据
* @return
*/
public static ApiResult success(Object data) {
return success(data, null);
}
/**
* 获取成功状态结果
*
* @param data 返回数据
* @param extraData 附加数据
* @return
*/
public static ApiResult success(Object data, Map<String, Object> extraData) {
ApiResult apiResult = new ApiResult();
apiResult.setCode(ResponseCode.SUCCESS.getCode());
apiResult.setMsg(ResponseCode.SUCCESS.getMsg());
apiResult.setData(data);
apiResult.setExtraData(extraData);
return apiResult;
}
/**
* 获取失败状态结果
*
* @return
*/
public static ApiResult failure() {
return failure(ResponseCode.FAIL.getCode(), ResponseCode.FAIL.getMsg(), null);
}
/**
* 获取失败状态结果
*
* @param msg (自定义)失败消息
* @return
*/
public static ApiResult failure(String msg) {
return failure(ResponseCode.FAIL.getCode(), msg, null);
}
/**
* 获取失败状态结果
*
* @param responseCode 返回状态码
* @return
*/
public static ApiResult failure(ResponseCode responseCode) {
return failure(responseCode.getCode(), responseCode.getMsg(), null);
}
/**
* 获取失败状态结果
*
* @param responseCode 返回状态码
* @param data 返回数据
* @return
*/
public static ApiResult failure(ResponseCode responseCode, Object data) {
return failure(responseCode.getCode(), responseCode.getMsg(), data);
}
/**
* 获取失败返回结果
*
* @param code 错误码
* @param msg 错误信息
* @param data 返回结果
* @return
*/
public static ApiResult failure(int code, String msg, Object data) {
ApiResult result = new ApiResult();
result.setCode(code);
result.setMsg(msg);
result.setData(data);
return result;
}
}
2.3 使用说明
code
: 接口返回状态码
msg
: 接口返回信息说明
data
: 接口返回数据
extraData
: 附加数据。当接口需要增加返回数据时,将其通过 extraData
传递,这样可以保证原来前端的接口数据结构不变,减少出故障概率。
timestamp
: 当前服务器系统时间戳,可用于获取服务器时间,也可用于作为作为数据有效性校验
2.4 Github 源码
Github 项目源码: https://github.com/Flying9001/springBootDemo
个人公众号:404Code,记录半个互联网人的技术与思考,感兴趣的可以关注.