lianshufeng 1 gadu atpakaļ
vecāks
revīzija
5d1931e597

+ 49 - 13
super/PCore/src/main/java/com/github/microservice/core/mvc/MVCResponseConfiguration.java

@@ -1,10 +1,22 @@
 package com.github.microservice.core.mvc;
 
 import com.github.microservice.core.util.result.InvokerExceptionResolver;
+import com.github.microservice.core.util.result.InvokerResult;
+import lombok.Getter;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
+import org.springframework.core.MethodParameter;
+import org.springframework.http.MediaType;
+import org.springframework.http.converter.HttpMessageConverter;
+import org.springframework.http.server.ServerHttpRequest;
+import org.springframework.http.server.ServerHttpResponse;
+import org.springframework.util.StringUtils;
+import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice;
+
+import java.util.Vector;
+import java.util.regex.Pattern;
 
 @Slf4j
 @Configuration
@@ -23,25 +35,49 @@ public class MVCResponseConfiguration {
     }
 
 
+    @Getter
+    private Vector<String> ignoreUrls = new Vector() {{
+        add(("^/actuator/.*"));// /v3/api-docs
+        add(("^/v3/.*"));// /v3/api-docs
+        add((".*manager.*")); // **manager**
+        add(("/error")); // /error
+    }};
+
+
 //    @Bean
+//    @ConditionalOnMissingBean
 //    public ResponseBodyAdvice responseBodyAdvice() {
 //        return new UserApiResponseBodyAdvice();
 //    }
 
 
-//    @RestControllerAdvice
-//    public class UserApiResponseBodyAdvice implements ResponseBodyAdvice<Object> {
-//
-//        @Override
-//        public boolean supports(MethodParameter returnType, Class<? extends HttpMessageConverter<?>> converterType) {
-//            return true;
-//        }
-//
-//        @Override
-//        public Object beforeBodyWrite(Object body, MethodParameter returnType, MediaType selectedContentType, Class<? extends HttpMessageConverter<?>> selectedConverterType, ServerHttpRequest request, ServerHttpResponse response) {
-//            return body;
-//        }
-//    }
+    //    @RestControllerAdvice
+    public class UserApiResponseBodyAdvice implements ResponseBodyAdvice<Object> {
+
+        @Override
+        public boolean supports(MethodParameter returnType, Class<? extends HttpMessageConverter<?>> converterType) {
+            return true;
+        }
+
+        @Override
+        public Object beforeBodyWrite(Object body, MethodParameter returnType, MediaType selectedContentType, Class<? extends HttpMessageConverter<?>> selectedConverterType, ServerHttpRequest request, ServerHttpResponse response) {
+
+            //url判断过滤
+            final String path = request.getURI().getPath();
+
+            if (StringUtils.hasText(path)) {
+                for (String expression : ignoreUrls) {
+                    if (Pattern.compile(expression).matcher(path).find()) {
+                        return body;
+                    }
+                }
+            }
+
+            return InvokerResult.notNull(body);
+        }
+
+
+    }
 
 
 }

+ 4 - 3
super/PCore/src/main/java/com/github/microservice/core/mvc/converter/MSMappingJackson2HttpMessageConverter.java

@@ -10,7 +10,6 @@ import org.springframework.http.converter.HttpMessageNotWritableException;
 import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
 import org.springframework.util.ReflectionUtils;
 import org.springframework.util.StringUtils;
-import org.springframework.web.context.request.NativeWebRequest;
 import org.springframework.web.context.request.RequestAttributes;
 import org.springframework.web.context.request.RequestContextHolder;
 import org.springframework.web.context.request.ServletRequestAttributes;
@@ -44,12 +43,14 @@ public class MSMappingJackson2HttpMessageConverter extends MappingJackson2HttpMe
 
     @Override
     protected void writeInternal(Object object, HttpOutputMessage outputMessage) throws IOException, HttpMessageNotWritableException {
-        super.writeInternal(invokerResult(object), outputMessage);
+//        super.writeInternal(invokerResult(object), outputMessage);
+        super.writeInternal(object, outputMessage);
     }
 
     @Override
     protected void writeInternal(Object object, Type type, HttpOutputMessage outputMessage) throws IOException, HttpMessageNotWritableException {
-        super.writeInternal(invokerResult(object), type, outputMessage);
+//        super.writeInternal(invokerResult(object), type, outputMessage);
+        super.writeInternal(object, type, outputMessage);
     }