From a2a438562bcfe3ae38b8cca215058deb8971a669 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=85=AD=E5=A6=82?= <8775@163.com>
Date: Tue, 4 Feb 2025 11:58:25 +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
---
.../sop-admin-backend/admin-boot/pom.xml | 15 ++--
.../sop/productweb/open/OpenProduct.java | 2 -
.../open/req/ProductSaveRequest.java | 4 +-
.../rest/impl/GoodsControllerImpl.java | 3 +-
.../gateway/controller/IndexController.java | 2 -
.../gateway/request/ApiRequestContext.java | 6 +-
.../service/impl/ParamExecutorImpl.java | 29 +++++++-
.../service/impl/RouteServiceImpl.java | 10 ++-
.../RedisIsvApiPermissionManagerImpl.java | 2 +-
.../manager/impl/RedisIsvManagerImpl.java | 2 +-
.../manager/impl/RedisSecretManager.java | 2 +-
.../gateway/service/validate/SignConfig.java | 3 +-
.../gitee/sop/gateway/util/RequestUtil.java | 2 +-
.../sop/support/constant}/SopConstants.java | 5 +-
.../support/context/DefaultOpenContext.java | 6 --
.../support/context/DefaultWebContext.java | 66 +++++++++++++++++
.../sop/support/context/OpenContext.java | 6 --
.../gitee/sop/support/context/WebContext.java | 73 +++++++++++++++++++
.../dubbo/DubboProviderTraceFilter.java | 23 ++++--
.../resources/security/serialize.allowlist | 1 +
20 files changed, 212 insertions(+), 50 deletions(-)
rename {sop-gateway/src/main/java/com/gitee/sop/gateway/common => sop-support/sop-service-support/src/main/java/com/gitee/sop/support/constant}/SopConstants.java (72%)
mode change 100755 => 100644
create mode 100644 sop-support/sop-service-support/src/main/java/com/gitee/sop/support/context/DefaultWebContext.java
create mode 100644 sop-support/sop-service-support/src/main/java/com/gitee/sop/support/context/WebContext.java
diff --git a/sop-admin/sop-admin-backend/admin-boot/pom.xml b/sop-admin/sop-admin-backend/admin-boot/pom.xml
index c0e6890b..55036f8c 100755
--- a/sop-admin/sop-admin-backend/admin-boot/pom.xml
+++ b/sop-admin/sop-admin-backend/admin-boot/pom.xml
@@ -39,6 +39,12 @@
dubbo-nacos-spring-boot-starter
+
+
+ org.apache.dubbo
+ dubbo-zookeeper-curator5-spring-boot-starter
+
+
org.springframework.boot
spring-boot-starter-data-redis
@@ -63,15 +69,6 @@
-
-
- org.apache.dubbo
- dubbo-dependencies-zookeeper-curator5
- ${dubbo.version}
- pom
- provided
-
-
org.projectlombok
lombok
diff --git a/sop-example/example-product/product-service/src/main/java/com/gitee/sop/productweb/open/OpenProduct.java b/sop-example/example-product/product-service/src/main/java/com/gitee/sop/productweb/open/OpenProduct.java
index 788f8a22..9ecafe04 100755
--- a/sop-example/example-product/product-service/src/main/java/com/gitee/sop/productweb/open/OpenProduct.java
+++ b/sop-example/example-product/product-service/src/main/java/com/gitee/sop/productweb/open/OpenProduct.java
@@ -5,7 +5,6 @@ import com.gitee.sop.productweb.open.resp.ProductResponse;
import com.gitee.sop.support.annotation.Open;
import com.gitee.sop.support.context.OpenContext;
import com.gitee.sop.support.dto.FileData;
-import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import javax.validation.constraints.NotNull;
@@ -18,7 +17,6 @@ import java.util.List;
* @author 六如
* @dubbo
*/
-@Api("产品服务")
public interface OpenProduct {
/**
diff --git a/sop-example/example-product/product-service/src/main/java/com/gitee/sop/productweb/open/req/ProductSaveRequest.java b/sop-example/example-product/product-service/src/main/java/com/gitee/sop/productweb/open/req/ProductSaveRequest.java
index 7dfe0d20..0b7eabca 100755
--- a/sop-example/example-product/product-service/src/main/java/com/gitee/sop/productweb/open/req/ProductSaveRequest.java
+++ b/sop-example/example-product/product-service/src/main/java/com/gitee/sop/productweb/open/req/ProductSaveRequest.java
@@ -16,9 +16,9 @@ public class ProductSaveRequest implements Serializable {
private static final long serialVersionUID = -1214422742659231037L;
/**
- * 故事名称
+ * 产品名称
*/
- @NotBlank(message = "故事名称必填")
+ @NotBlank(message = "产品名称必填")
@Length(max = 64)
private String productName;
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 7715760b..0057b609 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,6 +1,7 @@
package com.sop.example.rest.examplerest.rest.impl;
import com.gitee.sop.support.context.OpenContext;
+import com.gitee.sop.support.context.WebContext;
import com.sop.example.rest.examplerest.rest.GoodsController;
import com.sop.example.rest.examplerest.rest.vo.GoodsVO;
import org.apache.dubbo.config.annotation.DubboService;
@@ -19,7 +20,7 @@ public class GoodsControllerImpl implements GoodsController {
goodsVO.setId(id);
goodsVO.setName("冰箱");
- Map headers = OpenContext.current().getHeaders();
+ Map headers = WebContext.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/controller/IndexController.java b/sop-gateway/src/main/java/com/gitee/sop/gateway/controller/IndexController.java
index 63fe165f..fb6312c9 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
@@ -1,6 +1,5 @@
package com.gitee.sop.gateway.controller;
-import com.gitee.sop.gateway.common.SopConstants;
import com.gitee.sop.gateway.request.ApiRequest;
import com.gitee.sop.gateway.request.ApiRequestContext;
import com.gitee.sop.gateway.response.Response;
@@ -12,7 +11,6 @@ import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
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 b8816f1c..cd2a9991 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
@@ -1,12 +1,12 @@
package com.gitee.sop.gateway.request;
import com.alibaba.fastjson2.JSONObject;
+import com.gitee.sop.support.context.WebContext;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
import java.util.Locale;
-import java.util.Map;
/**
* @author 六如
@@ -53,7 +53,7 @@ public class ApiRequestContext {
private JSONObject rawParams;
/**
- * 请求头
+ * WEB Context
*/
- private Map headers;
+ private WebContext webContext;
}
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 939308d4..3a47cfd4 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
@@ -2,7 +2,6 @@ package com.gitee.sop.gateway.service.impl;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
-import com.gitee.sop.gateway.common.SopConstants;
import com.gitee.sop.gateway.config.ApiConfig;
import com.gitee.sop.gateway.request.ApiRequest;
import com.gitee.sop.gateway.request.ApiRequestContext;
@@ -14,6 +13,9 @@ import com.gitee.sop.gateway.service.ParamExecutor;
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;
@@ -24,9 +26,11 @@ 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;
+
/**
* 请求参数默认实现
*
@@ -93,10 +97,31 @@ public class ParamExecutorImpl implements ParamExecutor(request.getParameterMap()));
+ return defaultWebContext;
+ }
+
protected String getTag(HttpServletRequest request) {
return request.getHeader(apiConfig.getHeaderKeyTag());
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 aa88a06d..47d2529b 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
@@ -4,7 +4,6 @@ import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.gitee.sop.gateway.common.ApiInfoDTO;
import com.gitee.sop.gateway.common.ParamInfoDTO;
-import com.gitee.sop.gateway.common.SopConstants;
import com.gitee.sop.gateway.exception.ApiException;
import com.gitee.sop.gateway.exception.ExceptionExecutor;
import com.gitee.sop.gateway.interceptor.RouteInterceptor;
@@ -20,8 +19,10 @@ import com.gitee.sop.gateway.service.RouteService;
import com.gitee.sop.gateway.service.Serde;
import com.gitee.sop.gateway.service.validate.Validator;
import com.gitee.sop.gateway.util.ClassUtil;
+import com.gitee.sop.support.constant.SopConstants;
import com.gitee.sop.support.context.DefaultOpenContext;
import com.gitee.sop.support.context.OpenContext;
+import com.gitee.sop.support.context.WebContext;
import com.gitee.sop.support.dto.CommonFileData;
import com.gitee.sop.support.dto.FileData;
import lombok.extern.slf4j.Slf4j;
@@ -108,7 +109,8 @@ public class RouteServiceImpl implements RouteService {
String paramInfo = apiInfo.getParamInfo();
List paramInfoList = JSON.parseArray(paramInfo, ParamInfoDTO.class);
OpenContext openRequest = buildOpenContext(apiRequestContext);
- clientAttachment.setAttachment(SopConstants.OPEN_CONTEXT, JSON.toJSONString(openRequest));
+ clientAttachment.setObjectAttachment(SopConstants.OPEN_CONTEXT, openRequest);
+ clientAttachment.setObjectAttachment(SopConstants.WEB_CONTEXT, apiRequestContext.getWebContext());
return genericServiceInvoker.invoke(
apiInfo.getInterfaceClassName(),
apiInfo.getMethodName(),
@@ -156,6 +158,8 @@ public class RouteServiceImpl implements RouteService {
// 上下文
if (Objects.equals(type, OpenContext.class.getName())) {
params.add(openRequest);
+ } else if (Objects.equals(type, WebContext.class.getName())) {
+ params.add(apiRequestContext.getWebContext());
} else if (Objects.equals(type, FileData.class.getName()) || Objects.equals(actualType, FileData.class.getName())) {
// 处理文件上传
Optional