//basePackages:设置统一拦截基础包名
@RestControllerAdvice(basePackages = {"com.wzx.controller"})
public class MyAdviceBody implements ResponseBodyAdvice {
@Override
public boolean supports(MethodParameter returnType, Class converterType) {
//这个方法是拦截支持,可以写如哪些是要进行拦截,那些不进行拦截
return true;
}
@ExceptionHandler(value = Exception.class)
public Object defaultErrorHandler(HttpServletRequest req, Exception ex) {
HttpResponse<Object> httpResponse = new HttpResponse<>();
httpResponse.setCode(1);
httpResponse.setMessage(ex.getMessage());
return httpResponse;
}
@Override
public Object beforeBodyWrite(Object body, MethodParameter returnType, MediaType selectedContentType, Class selectedConverterType, ServerHttpRequest request, ServerHttpResponse response) {
HttpResponse<Object> httpResponse = new HttpResponse<>();
String message = StrUtil.EMPTY;
httpResponse.setCode(0);
httpResponse.setMessage(message);
httpResponse.setData(body);
if (selectedConverterType == StringHttpMessageConverter.class) {
return JSONUtil.toJsonStr(httpResponse);
} else {
return httpResponse;
}
}
}
@Data
//例子
//code 0 message 成功 data ok
//code 1 message 运行错误 data null
public class HttpResponse<T> implements Serializable {
//返回码(公司拟定的) 0代表正常 非零代表错误
private int code;
//返回信息,错误信息 0成功 非零 具体错误信息
private String message;
private T data;
}
@RestController
public class Demo {
@GetMapping("/test")
public String test1(){
return "ok";
}
@GetMapping("test2")
public List<Integer> test2(){
ArrayList<Integer> integers = CollUtil.newArrayList(1, 2, 3, 4, 5, 6, 7);
return integers;
}
@GetMapping("/tes3t")
public String test3(){
int a=0;
int n=8/a;
return "ok";
}
}