Hello大家好,本章我们将请求结果封装成统一格式。另求各路大神指点,感谢
一:这么做的好处是什么?
我们调用服务返回的类型有String,List,Map,Bean,Int,Boolean等类型,可以统一成result对象返回,方便项目组其他成员调用接口
二:定义响应码枚举
package com.example.demo.core.ret;
/**
* @Description: 响应码枚举,参考HTTP状态码的语义
* @author 张瑶
* @date 2018/4/19 09:42
*/
public enum RetCode {
// 成功
SUCCESS(200),
// 失败
FAIL(400),
// 未认证(签名错误)
UNAUTHORIZED(401),
// 接口不存在
NOT_FOUND(404),
// 服务器内部错误
INTERNAL_SERVER_ERROR(500);
public int code;
RetCode(int code) {
this.code = code;
}
}
这里简单列出几个,大家可以根据实际业务需求自己定义
三:创建返回对象实体
package com.example.demo.core.ret;
import java.io.Serializable;
import com.alibaba.fastjson.JSON;
/**
* @Description: 返回对象实体
* @author 张瑶
* @date 2018/4/19 09:43
*/
public class RetResult<T> {
public int code;
private String msg;
private T data;
public RetResult<T> setCode(RetCode retCode) {
this.code = retCode.code;
return this;
}
public int getCode() {
return code;
}
public RetResult<T> setCode(int code) {
this.code = code;
return this;
}
public String getMsg() {
return msg;
}
public RetResult<T> setMsg(String msg) {
this.msg = msg;
return this;
}
public T getData() {
return data;
}
public RetResult<T> setData(T data) {
this.data = data;
return this;
}
}
说明:code为状态码、msg为提示信息、data为返回的数据
四:转换数据格式
package com.example.demo.core.ret;
/**
* @Description: 将结果转换为封装后的对象
* @author 张瑶
* @date 2018/4/19 09:45
*/
public class RetResponse {
private final static String SUCCESS = "success";
public static <T> RetResult<T> makeOKRsp() {
return new RetResult<T>().setCode(RetCode.SUCCESS).setMsg(SUCCESS);
}
public static <T> RetResult<T> makeOKRsp(T data) {
return new RetResult<T>().setCode(RetCode.SUCCESS).setMsg(SUCCESS).setData(data);
}
public static <T> RetResult<T> makeErrRsp(String message) {
return new RetResult<T>().setCode(RetCode.FAIL).setMsg(SUCCESS);
}
public static <T> RetResult<T> makeRsp(int code, String msg) {
return new RetResult<T>().setCode(code).setMsg(msg);
}
public static <T> RetResult<T> makeRsp(int code, String msg, T data) {
return new RetResult<T>().setCode(code).setMsg(msg).setData(data);
}
}
五:功能测试
改造controller代码
改造前代码
@PostMapping("/selectById")
public UserInfo selectById(Integer id){
return userInfoService.selectById(id);
}
改造前请求返回数据格式
{
"id": 1,
"userName": "1"
}
改造后代码
@PostMapping("/selectById")
public RetResult<UserInfo> selectById(Integer id){
UserInfo userInfo = userInfoService.selectById(id);
return RetResponse.makeOKRsp(userInfo);
}
改造后请求返回数据格式
{
"code": 200,
"msg": "success",
"data": {
"id": 1,
"userName": "1"
}
}
怎么样,是不是感觉清爽许多
项目地址
码云地址: https://gitee.com/beany/mySpringBoot
GitHub地址: https://github.com/MyBeany/mySpringBoot
写文章不易,如对您有帮助,请帮忙点下star
结尾
springboot将请求结果封装成统一格式已完成,后续功能接下来陆续更新。另求各路大神指点,感谢大家。