```java
@ControllerAdvice
public class APIResponseInterceptor implements ResponseBodyAdvice<Object> {
private static final String Not_Wrap_Result = "Not-Wrap-Result";
@Override
public boolean supports(MethodParameter returnType, Class<? extends HttpMessageConverter<?>> converterType) {
return !returnType.getDeclaringClass().equals(GlobalExceptionHandler.class);
}
@Override
public Object beforeBodyWrite(Object body, MethodParameter returnType, MediaType selectedContentType, Class<? extends HttpMessageConverter<?>> selectedConverterType, ServerHttpRequest request, ServerHttpResponse response) {
HttpHeaders httpHeaders = request.getHeaders();
if (httpHeaders.containsKey(Not_Wrap_Result) && "true".equals(httpHeaders.getFirst(Not_Wrap_Result))) {
return body;
}
if (body instanceof WebAPIResponse) {
return body;
}
String path = request.getURI().getPath();
if(path.contains("swagger") ||path.contains("api-docs") ){
return body;
}
if (body instanceof String) {
response.getHeaders().add(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_UTF8_VALUE);
return JSON.toJSONString(WebAPIResponse.success(body));
}
if (body instanceof Page) {
Page page = (Page) body;
return WebAPIResponse.page(page.getResult(), page.getTotal());
}
return WebAPIResponse.success(body);
}
}