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)
*/