From 10b060255c6bb1a1719bac29fc1eae0ea92d3de5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=85=AD=E5=A6=82?= <8775@163.com> Date: Sun, 2 Feb 2025 16:37:12 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9Erestful=E6=A8=A1=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../examplerest/rest/impl/GoodsControllerImpl.java | 7 +++++++ .../sop/gateway/request/ApiRequestContext.java | 6 ++++++ .../sop/gateway/service/impl/ParamExecutorImpl.java | 2 ++ .../sop/gateway/service/impl/RouteServiceImpl.java | 7 +++++-- .../com/gitee/sop/gateway/util/RequestUtil.java | 13 +++++++++++++ .../sop/support/context/DefaultOpenContext.java | 6 ++++++ .../com/gitee/sop/support/context/OpenContext.java | 11 +++++++++++ 7 files changed, 50 insertions(+), 2 deletions(-) diff --git a/sop-example/example-rest/src/main/java/com/sop/example/rest/examplerest/rest/impl/GoodsControllerImpl.java b/sop-example/example-rest/src/main/java/com/sop/example/rest/examplerest/rest/impl/GoodsControllerImpl.java index cdbd9580..7715760b 100644 --- a/sop-example/example-rest/src/main/java/com/sop/example/rest/examplerest/rest/impl/GoodsControllerImpl.java +++ b/sop-example/example-rest/src/main/java/com/sop/example/rest/examplerest/rest/impl/GoodsControllerImpl.java @@ -1,9 +1,12 @@ package com.sop.example.rest.examplerest.rest.impl; +import com.gitee.sop.support.context.OpenContext; import com.sop.example.rest.examplerest.rest.GoodsController; import com.sop.example.rest.examplerest.rest.vo.GoodsVO; import org.apache.dubbo.config.annotation.DubboService; +import java.util.Map; + /** * @author 六如 @@ -15,6 +18,10 @@ public class GoodsControllerImpl implements GoodsController { GoodsVO goodsVO = new GoodsVO(); goodsVO.setId(id); goodsVO.setName("冰箱"); + + Map headers = OpenContext.current().getHeaders(); + String token = headers.get("token"); + System.out.println(token); return goodsVO; } } diff --git a/sop-gateway/src/main/java/com/gitee/sop/gateway/request/ApiRequestContext.java b/sop-gateway/src/main/java/com/gitee/sop/gateway/request/ApiRequestContext.java index c1af6022..b8816f1c 100755 --- a/sop-gateway/src/main/java/com/gitee/sop/gateway/request/ApiRequestContext.java +++ b/sop-gateway/src/main/java/com/gitee/sop/gateway/request/ApiRequestContext.java @@ -6,6 +6,7 @@ import lombok.Getter; import lombok.Setter; import java.util.Locale; +import java.util.Map; /** * @author 六如 @@ -50,4 +51,9 @@ public class ApiRequestContext { * 原始参数 */ private JSONObject rawParams; + + /** + * 请求头 + */ + private Map headers; } 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 75dd21a3..939308d4 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 @@ -93,9 +93,11 @@ public class ParamExecutorImpl implements ParamExecutor paramInfoList = JSON.parseArray(paramInfo, ParamInfoDTO.class); OpenContext openRequest = buildOpenContext(apiRequestContext); - RpcContext.getClientAttachment().setAttachment(SopConstants.OPEN_CONTEXT, JSON.toJSONString(openRequest)); + clientAttachment.setAttachment(SopConstants.OPEN_CONTEXT, JSON.toJSONString(openRequest)); return genericServiceInvoker.invoke( apiInfo.getInterfaceClassName(), apiInfo.getMethodName(), @@ -201,6 +203,7 @@ public class RouteServiceImpl implements RouteService { defaultOpenRequest.setNotifyUrl(apiRequest.getNotifyUrl()); defaultOpenRequest.setTraceId(apiRequestContext.getTraceId()); defaultOpenRequest.setLocale(apiRequestContext.getLocale()); + defaultOpenRequest.setHeaders(apiRequestContext.getHeaders()); defaultOpenRequest.initContext(); return defaultOpenRequest; 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 a0e94390..99b12403 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 @@ -21,6 +21,8 @@ import java.net.InetAddress; import java.net.URLDecoder; import java.net.UnknownHostException; import java.util.ArrayList; +import java.util.Enumeration; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -108,6 +110,17 @@ public class RequestUtil { return jsonObject; } + public static Map getHeaders(HttpServletRequest request) { + Enumeration headerNames = request.getHeaderNames(); + Map headers = new LinkedHashMap<>(); + if (headerNames.hasMoreElements()) { + String name = headerNames.nextElement(); + String value = request.getHeader(name); + headers.put(name, value); + } + return headers; + } + /** * 获取上传文件内容 * diff --git a/sop-support/sop-service-support/src/main/java/com/gitee/sop/support/context/DefaultOpenContext.java b/sop-support/sop-service-support/src/main/java/com/gitee/sop/support/context/DefaultOpenContext.java index c557c62a..bff1f643 100755 --- a/sop-support/sop-service-support/src/main/java/com/gitee/sop/support/context/DefaultOpenContext.java +++ b/sop-support/sop-service-support/src/main/java/com/gitee/sop/support/context/DefaultOpenContext.java @@ -5,6 +5,7 @@ import lombok.EqualsAndHashCode; import java.io.Serializable; import java.util.Locale; +import java.util.Map; /** * @author 六如 @@ -54,6 +55,11 @@ public class DefaultOpenContext extends OpenContext implements Serializable { */ private Locale locale; + /** + * 请求头 + */ + private Map headers; + public void initContext() { this.setContext(this); } diff --git a/sop-support/sop-service-support/src/main/java/com/gitee/sop/support/context/OpenContext.java b/sop-support/sop-service-support/src/main/java/com/gitee/sop/support/context/OpenContext.java index 4a5fa4e8..61749e36 100755 --- a/sop-support/sop-service-support/src/main/java/com/gitee/sop/support/context/OpenContext.java +++ b/sop-support/sop-service-support/src/main/java/com/gitee/sop/support/context/OpenContext.java @@ -3,6 +3,7 @@ package com.gitee.sop.support.context; import com.alibaba.ttl.TransmittableThreadLocal; import java.util.Locale; +import java.util.Map; /** * @author 六如 @@ -51,10 +52,20 @@ public abstract class OpenContext { */ public abstract Locale getLocale(); + /** + * 获取请求头 + */ + public abstract Map getHeaders(); + protected void setContext(OpenContext openContext) { THREAD_LOCAL.set(openContext); } + /** + * 获取当前OpenContext + * + * @return 返回OpenContext + */ public static OpenContext current() { return THREAD_LOCAL.get(); }