From d3d0eb4b1b1ba0a714db5782c245b394e4a61063 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=85=AD=E5=A6=82?= <8775@163.com> Date: Thu, 13 Mar 2025 01:21:07 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96dubbo=20filter?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gateway/controller/IndexController.java | 2 ++ .../service/impl/ParamExecutorImpl.java | 28 +------------------ .../service/impl/RouteServiceImpl.java | 4 ++- .../gitee/sop/gateway/util/RequestUtil.java | 24 ++++++++++++++++ 4 files changed, 30 insertions(+), 28 deletions(-) diff --git a/sop-gateway/src/main/java/com/gitee/sop/gateway/controller/IndexController.java b/sop-gateway/src/main/java/com/gitee/sop/gateway/controller/IndexController.java index fb6312c9..131b5939 100755 --- a/sop-gateway/src/main/java/com/gitee/sop/gateway/controller/IndexController.java +++ b/sop-gateway/src/main/java/com/gitee/sop/gateway/controller/IndexController.java @@ -5,6 +5,7 @@ import com.gitee.sop.gateway.request.ApiRequestContext; import com.gitee.sop.gateway.response.Response; import com.gitee.sop.gateway.service.ParamExecutor; import com.gitee.sop.gateway.service.RouteService; +import com.gitee.sop.gateway.util.RequestUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Value; @@ -95,6 +96,7 @@ public class IndexController { apiRequest.setMethod(apiName); apiRequest.setVersion(v); apiRequestContext.setIsRest(true); + apiRequestContext.setWebContext(RequestUtil.buildWebContext(request)); Response apiResponse = restRouteService.route(apiRequestContext); paramExecutor.write(apiRequestContext, apiResponse, response); } diff --git a/sop-gateway/src/main/java/com/gitee/sop/gateway/service/impl/ParamExecutorImpl.java b/sop-gateway/src/main/java/com/gitee/sop/gateway/service/impl/ParamExecutorImpl.java index ed2de65e..5eea9ee5 100755 --- a/sop-gateway/src/main/java/com/gitee/sop/gateway/service/impl/ParamExecutorImpl.java +++ b/sop-gateway/src/main/java/com/gitee/sop/gateway/service/impl/ParamExecutorImpl.java @@ -14,8 +14,6 @@ import com.gitee.sop.gateway.service.Serde; import com.gitee.sop.gateway.util.RequestUtil; import com.gitee.sop.gateway.util.ResponseUtil; import com.gitee.sop.support.constant.SopConstants; -import com.gitee.sop.support.context.DefaultWebContext; -import com.gitee.sop.support.context.WebContext; import com.gitee.sop.support.dto.FileData; import lombok.extern.slf4j.Slf4j; import org.apache.commons.io.IOUtils; @@ -26,11 +24,9 @@ import org.springframework.http.MediaType; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.util.LinkedHashMap; import java.util.UUID; - /** * 请求参数默认实现 * @@ -96,32 +92,10 @@ public class ParamExecutorImpl implements ParamExecutor(request.getParameterMap())); - defaultWebContext.setRealIp(RequestUtil.getIP(request)); - return defaultWebContext; - } - protected ApiRequest convertApiRequest(HttpServletRequest request, JSONObject jsonObject) { ApiRequest apiRequest = new ApiRequest(); diff --git a/sop-gateway/src/main/java/com/gitee/sop/gateway/service/impl/RouteServiceImpl.java b/sop-gateway/src/main/java/com/gitee/sop/gateway/service/impl/RouteServiceImpl.java index 565fb80c..e59ebaaf 100755 --- a/sop-gateway/src/main/java/com/gitee/sop/gateway/service/impl/RouteServiceImpl.java +++ b/sop-gateway/src/main/java/com/gitee/sop/gateway/service/impl/RouteServiceImpl.java @@ -120,7 +120,9 @@ public class RouteServiceImpl implements RouteService { List paramInfoList = JSON.parseArray(paramInfo, ParamInfoDTO.class); OpenContext openRequest = buildOpenContext(apiRequestContext); clientAttachment.setObjectAttachment(SopConstants.OPEN_CONTEXT, openRequest); - clientAttachment.setObjectAttachment(SopConstants.WEB_CONTEXT, apiRequestContext.getWebContext()); + if (apiRequestContext.getIsRest()) { + clientAttachment.setObjectAttachment(SopConstants.WEB_CONTEXT, apiRequestContext.getWebContext()); + } return genericServiceInvoker.invoke( apiInfo.getInterfaceClassName(), apiInfo.getMethodName(), diff --git a/sop-gateway/src/main/java/com/gitee/sop/gateway/util/RequestUtil.java b/sop-gateway/src/main/java/com/gitee/sop/gateway/util/RequestUtil.java index 57ac7d45..85edbb78 100755 --- a/sop-gateway/src/main/java/com/gitee/sop/gateway/util/RequestUtil.java +++ b/sop-gateway/src/main/java/com/gitee/sop/gateway/util/RequestUtil.java @@ -4,6 +4,8 @@ import com.alibaba.fastjson2.JSONObject; import com.gitee.sop.gateway.request.ApiUploadContext; import com.gitee.sop.gateway.request.UploadContext; import com.gitee.sop.support.constant.SopConstants; +import com.gitee.sop.support.context.DefaultWebContext; +import com.gitee.sop.support.context.WebContext; import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.apache.commons.fileupload.FileItem; @@ -181,6 +183,28 @@ public class RequestUtil { return uploadInfo; } + public static WebContext buildWebContext(HttpServletRequest request) { + DefaultWebContext defaultWebContext = new DefaultWebContext(); + defaultWebContext.setMethod(request.getMethod()); + defaultWebContext.setPathInfo(request.getPathInfo()); + defaultWebContext.setPathTranslated(request.getPathTranslated()); + defaultWebContext.setContextPath(request.getContextPath()); + defaultWebContext.setQueryString(request.getQueryString()); + defaultWebContext.setRequestURI(request.getRequestURI()); + defaultWebContext.setRequestURL(request.getRequestURL()); + defaultWebContext.setServletPath(request.getServletPath()); + defaultWebContext.setContentLength(request.getContentLength()); + defaultWebContext.setContentType(request.getContentType()); + defaultWebContext.setRemoteAddr(request.getRemoteAddr()); + defaultWebContext.setRemoteHost(request.getRemoteHost()); + defaultWebContext.setRemotePort(request.getRemotePort()); + defaultWebContext.setLocale(request.getLocale()); + defaultWebContext.setHeaders(RequestUtil.getHeaders(request)); + defaultWebContext.setParamtreMap(new LinkedHashMap<>(request.getParameterMap())); + defaultWebContext.setRealIp(RequestUtil.getIP(request)); + return defaultWebContext; + } + @Data public static class UploadInfo { private JSONObject apiParam;