From 02d05856eae5d716630674e60657153e2b814e53 Mon Sep 17 00:00:00 2001 From: TerryYYG Date: Sun, 21 Aug 2022 17:21:42 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=BC=80=E6=94=BE=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E5=A6=82=E6=9E=9C=E8=BF=94=E5=9B=9E=E9=9D=9E=E5=AF=B9?= =?UTF-8?q?=E8=B1=A1=E7=9A=84=E5=8D=95=E4=B8=AA=E6=95=B0=E6=8D=AE=EF=BC=8C?= =?UTF-8?q?=E7=BB=84=E8=A3=85=E5=93=8D=E5=BA=94=E7=BB=93=E6=9E=9C=E5=BC=82?= =?UTF-8?q?=E5=B8=B8=E7=9A=84=E9=97=AE=E9=A2=98=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sop-common/sop-bridge-nacos/pom.xml | 7 ++++++ .../result/BaseExecutorAdapter.java | 7 ++++++ .../Example1001_BaseController.java | 12 +++++++++ .../java/com/gitee/sop/test/AllInOneTest.java | 25 +++++++++++++++++++ 4 files changed, 51 insertions(+) diff --git a/sop-common/sop-bridge-nacos/pom.xml b/sop-common/sop-bridge-nacos/pom.xml index 02e49bcf..98e2ee8b 100644 --- a/sop-common/sop-bridge-nacos/pom.xml +++ b/sop-common/sop-bridge-nacos/pom.xml @@ -11,6 +11,11 @@ 4.0.0 sop-bridge-nacos + + 2.2.5.RELEASE + 1.18.4 + + com.gitee.sop @@ -21,11 +26,13 @@ com.alibaba.cloud spring-cloud-starter-alibaba-nacos-discovery + ${spring-cloud-alibaba.version} org.projectlombok lombok + ${org.projectlombok.version} provided diff --git a/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/result/BaseExecutorAdapter.java b/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/result/BaseExecutorAdapter.java index 3b04524b..2b7b2842 100644 --- a/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/result/BaseExecutorAdapter.java +++ b/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/result/BaseExecutorAdapter.java @@ -2,6 +2,7 @@ package com.gitee.sop.gatewaycommon.result; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.JSONValidator; import com.alibaba.fastjson.parser.Feature; import com.gitee.sop.gatewaycommon.bean.ApiConfig; import com.gitee.sop.gatewaycommon.bean.DefaultRouteInterceptorContext; @@ -41,9 +42,11 @@ public abstract class BaseExecutorAdapter implements ResultExecutor private static final String GATEWAY_CODE_NAME = "code"; private static final String GATEWAY_MSG_NAME = "msg"; + private static final String GATEWAY_RESPONSE_NAME = "response"; private static final String ARRAY_START = "["; private static final String ARRAY_END = "]"; private static final String ROOT_JSON = "{'items':%s}".replace("'", "\""); + private static final String SINGLE_ROOT_JSON = "{'single_response':%s}".replace("'", "\""); static { HTTP_STATUS_ERROR_ENUM_MAP.put(HttpStatus.OK.value(), ErrorEnum.SUCCESS); @@ -205,6 +208,10 @@ public abstract class BaseExecutorAdapter implements ResultExecutor if (serviceResult.startsWith(ARRAY_START) && serviceResult.endsWith(ARRAY_END)) { return String.format(ROOT_JSON, serviceResult); } + // 如果直接返回单个数据类型,需进行包装,变成:{"single_response": ...} + if (!JSONValidator.from(serviceResult).validate() || JSONValidator.from(serviceResult).getType() == JSONValidator.Type.Value) { + return String.format(SINGLE_ROOT_JSON, new StringBuilder(serviceResult).insert(0, "\"").append("\"").toString()); + } return serviceResult; } diff --git a/sop-example/sop-story/src/main/java/com/gitee/sop/storyweb/controller/Example1001_BaseController.java b/sop-example/sop-story/src/main/java/com/gitee/sop/storyweb/controller/Example1001_BaseController.java index 27ef9059..ccb8b7dd 100644 --- a/sop-example/sop-story/src/main/java/com/gitee/sop/storyweb/controller/Example1001_BaseController.java +++ b/sop-example/sop-story/src/main/java/com/gitee/sop/storyweb/controller/Example1001_BaseController.java @@ -326,4 +326,16 @@ public class Example1001_BaseController { return result; } + + @RequestMapping("/getStr") + @Open(value = "story.getStr", version = "1.0") + public String getStr() { + return "Hello SOP"; + } + + @RequestMapping("/getInt") + @Open(value = "story.getInt", version = "1.0") + public Integer getInt() { + return 666; + } } diff --git a/sop-test/src/test/java/com/gitee/sop/test/AllInOneTest.java b/sop-test/src/test/java/com/gitee/sop/test/AllInOneTest.java index b970d8bb..33f8c802 100644 --- a/sop-test/src/test/java/com/gitee/sop/test/AllInOneTest.java +++ b/sop-test/src/test/java/com/gitee/sop/test/AllInOneTest.java @@ -42,6 +42,31 @@ public class AllInOneTest extends TestBase { client.execute(requestBuilder); } + /** + * 以get方式提交 返回单值数据 + */ + public void testGetStr() { + Client.RequestBuilder requestBuilder = new Client.RequestBuilder() + .method("story.getStr") +// .method("story.getInt") + .version("1.0") + .httpMethod(HttpTool.HTTPMethod.GET); + + client.execute(requestBuilder); + } + + /** + * 以get方式提交 返回List + */ + public void testGetList() { + Client.RequestBuilder requestBuilder = new Client.RequestBuilder() + .method("story.list") + .version("1.0") + .httpMethod(HttpTool.HTTPMethod.GET); + + client.execute(requestBuilder); + } + /** * 以表单方式提交(application/x-www-form-urlencoded) */