仅作为个人学习总结
使用JSON作为统一响应数据格式
统一json格式的response,给出一组结果返回值的参考:
{
"hasPrePage": false,
"hasNextPage": false,
"everyPage": 10,
"totalPage": 1,
"currentPage": 1,
"beginIndex": 0,
"totalCount": 6,
"code": "SUCCESS",
"data": [
{
"id": 163,
"version": "V1.0",
"status": 0,
"cteUser": "learnfake",
"uteUser": "learnfake",
"cteTime": "2020-10-24 12:12:59",
"uteTime": "2020-10-24 12:53:44",
"retryCount": "3",
"intervalTime": "1800",
"timeOut": "7200",
"adapterType": "json"
}
]
}
返回的请求对象
定义http请求返回的最外层对象,封装返回数据的统一格式
/**
* @Author wyrctzy
* @Description http请求返回的最外层对象
* @CreatedOn 2020/10/24
*/
@Data
public class PageResult<T> {
/** 错误码. */
private Integer code;
/** 提示信息. */
private String msg;
/** 具体的内容. */
private T data;
}
tips:为了使得代码更加的简洁,使用了lombok注解
@Data
相当于加上了:
@Getter/@Setter get和set方法
@ToString ToString方法
@EqualsAndHashCode 判等和哈希方法
@RequiredArgsConstructor 传参构造
直接在Controller中使用PageResult
如果不使用工具类时,我们将不得不频繁的New出结果集对象,并对其返回需要的属性值进行填充,代码比较丑:
@GetMapping("")
public PageResult<List> list() {
int total = fakeNewsApp.total(params, condition);
List<FakenewsDTO> fakeNewsDTOList = fakeNewsApp.list();
PageResult pageResult = new PageResult();
pageResult.setCode(0);
pageResult.setMsg("SUCCESS");
pageResult.setData(fakeNewsDTOList);
return pageResult;
}
定义结果集的工具类PageResultUtil
为了可以达到代码复用目的,由于很多时候如果需要返回结果都必须new Result()的话代码整体就会非常的冗长而且都基本是相同的内容,因此有必要在这里增加一个工具类:class PageResultUtil
可以看到上述在返回这个结果之前需要一顿New和Set,这就导致需要的东西越多罗列的就会越长,为了避免上面出现的代码冗余情况,就应该增加工具类,封装请求失败和成功时候的方法,使用静态方法:
public class PageResultUtil {
public static PageResult success(Object object) {
PageResult pageResult = new PageResult();
pageResult.setCode(0);
pageResult.setMsg("SUCCESS");
pageResult.setData(fakeNewsDTOList);
pageResult.setData(object);
return result;
}
public static PageResult success(Integer code, String msg) {
PageResult pageResult = new PageResult();
pageResult.setCode(code);
pageResult.setMsg("SUCCESS" + msg);
return pageResult;
}
public static PageResult error(Integer code, String msg) {
PageResult pageResult = new PageResult();
pageResult.setCode(code);
pageResult.setMsg("ERROR" + msg);
return pageResult;
}
}
使用结果集工具类PageResultUtil
简洁!仅作为示例:
@GetMapping("")
public PageResult<List> list() {
int total = fakeNewsApp.total(params, condition);
List<FakenewsDTO> fakeNewsDTOList = fakeNewsApp.list();
returnPageResult.success(fakeNewsDTOList);
}
后续继续学习,对于异常处理和全局异常捕获的封装和使用