统一返参格式定义
统一返参实体类
@Data
public class ResultVO<T> {
/**
* 状态码,比如1000代表响应成功
*/
private int code;
/**
* 响应信息,用来说明响应情况
*/
private String msg;
/**
* 响应的具体数据
*/
private T data;
public ResultVO(T data) {
this(ResultCode.SUCCESS, data);
}
public ResultVO(ResultCode resultCode, T data) {
this.code = resultCode.getCode();
this.msg = resultCode.getMsg();
this.data = data;
}}
全局处理增强版Controller,避免Controller里返回数据每次都要用响应体来包装
/**
* 全局处理增强版Controller,避免Controller里返回数据每次都要用响应体来包装
* @author: wys
* @create: 2021-05-08 16:38
**/
@RestControllerAdvice(basePackages = {"com.baozun.dma.collection.delivery.controller"}) // 注意哦,这里要加上需要扫描的包
public class ResponseControllerAdvice implements ResponseBodyAdvice<Object> {
@Override
public boolean supports(MethodParameter returnType, Class<? extends HttpMessageConverter<?>> aClass) {
// 如果接口返回的类型本身就是ResultVO那就没有必要进行额外的操作,返回false
return !returnType.getGenericParameterType().equals(ResultVO.class);
}
@Override
public Object beforeBodyWrite(Object data, MethodParameter returnType, MediaType mediaType, Class<? extends HttpMessageConverter<?>> aClass, ServerHttpRequest serverHttpRequest, ServerHttpResponse serverHttpResponse) {
// String类型不能直接包装,所以要进行些特别的处理
if (returnType.getGenericParameterType().equals(String.class)) {
ObjectMapper objectMapper = new ObjectMapper();
try {
// 将数据包装在ResultVO里后,再转换为json字符串响应给前端
return objectMapper.writeValueAsString(new ResultVO<>(data));
} catch (JsonProcessingException e) {
e.printStackTrace();
}
}
// 将原本的数据包装在ResultVO里
return new ResultVO<>(data);
}
}
controller
/**
* db列表查询
* @param dbName 需要搜索的字段
* @return
*/
@GetMapping("/findList")
@ApiResponses(value = {
@ApiResponse(code = 200, message = "接口返回成功状态"),
@ApiResponse(code = 500, message = "接口返回未知错误,请联系开发人员调试")
})
@ApiOperation(value = "table列表查询")
public PageData findList(@ApiParam(name="name",value="检索字段",required=false) String dbName,
@ApiParam(name="pageNum",value="当前页",required=false) @RequestParam(value = "pageNum", defaultValue = "1") int pageNum, //在参数里接受当前是第几页 pageNum,以及每页显示多少条数据 pageSize.默认值分别是1和10
@ApiParam(name="pageSize",value="每页大小",required=false) @RequestParam(value = "pageSize", defaultValue = "10") int pageSize
){
PageData list= dsmDbTableService.findList(dbName,pageNum,pageSize);
return list;
}
返回格式