Răsfoiți Sursa

持久化保存`ResponseBody`配置

mxd 3 ani în urmă
părinte
comite
ecacfa64af

+ 15 - 0
magic-api-spring-boot-starter/src/main/java/org/ssssssss/magicapi/spring/boot/starter/MagicAPIProperties.java

@@ -128,6 +128,13 @@ public class MagicAPIProperties {
 	 */
 	private int compileCacheSize = 500;
 
+	/**
+	 * 是否持久化保存ResponseBody
+	 *
+	 * @since 1.5.3
+	 */
+	private boolean persistenceResponseBody = true;
+
 	@NestedConfigurationProperty
 	private SecurityConfig securityConfig = new SecurityConfig();
 
@@ -409,4 +416,12 @@ public class MagicAPIProperties {
 	public void setCompileCacheSize(int compileCacheSize) {
 		this.compileCacheSize = compileCacheSize;
 	}
+
+	public boolean isPersistenceResponseBody() {
+		return persistenceResponseBody;
+	}
+
+	public void setPersistenceResponseBody(boolean persistenceResponseBody) {
+		this.persistenceResponseBody = persistenceResponseBody;
+	}
 }

+ 1 - 0
magic-api-spring-boot-starter/src/main/java/org/ssssssss/magicapi/spring/boot/starter/MagicSwaggerConfiguration.java

@@ -57,6 +57,7 @@ public class MagicSwaggerConfiguration {
 		SwaggerProvider swaggerProvider = new SwaggerProvider();
 		swaggerProvider.setGroupServiceProvider(groupServiceProvider);
 		swaggerProvider.setMappingHandlerMapping(handlerMapping);
+		swaggerProvider.setPersistenceResponseBody(properties.isPersistenceResponseBody());
 		SwaggerEntity.License license = new SwaggerEntity.License("MIT", "https://gitee.com/ssssssss-team/magic-api/blob/master/LICENSE");
 		swaggerProvider.setInfo(new SwaggerEntity.Info(config.getDescription(), config.getVersion(), config.getTitle(), license, config.getConcat()));
 		swaggerProvider.setBasePath(servletContext.getContextPath());

+ 15 - 8
magic-api/src/main/java/org/ssssssss/magicapi/swagger/SwaggerProvider.java

@@ -40,6 +40,7 @@ public class SwaggerProvider {
 	private String basePath;
 	private GroupServiceProvider groupServiceProvider;
 	private SwaggerEntity.Info info;
+	private boolean persistenceResponseBody;
 
 	public void setMappingHandlerMapping(MappingHandlerMapping mappingHandlerMapping) {
 		this.mappingHandlerMapping = mappingHandlerMapping;
@@ -57,6 +58,10 @@ public class SwaggerProvider {
 		this.basePath = basePath;
 	}
 
+	public void setPersistenceResponseBody(boolean persistenceResponseBody) {
+		this.persistenceResponseBody = persistenceResponseBody;
+	}
+
 	@ResponseBody
 	public SwaggerEntity swaggerJson() {
 		this.DEFINITION_MAP.clear();
@@ -78,16 +83,18 @@ public class SwaggerProvider {
 				if (hasBody && baseDefinition != null) {
 					doProcessDefinition(baseDefinition, info, "root_", "request", 0);
 				}
-				baseDefinition = info.getResponseBodyDefinition();
 				parameters.forEach(path::addParameter);
-				if (baseDefinition != null) {
-					Map responseMap = parseResponse(info);
-					if (!responseMap.isEmpty()) {
-						path.setResponses(responseMap);
-						doProcessDefinition(baseDefinition, info, "root_" + baseDefinition.getName(), "response", 0);
+				if (this.persistenceResponseBody) {
+					baseDefinition = info.getResponseBodyDefinition();
+					if (baseDefinition != null) {
+						Map responseMap = parseResponse(info);
+						if (!responseMap.isEmpty()) {
+							path.setResponses(responseMap);
+							doProcessDefinition(baseDefinition, info, "root_" + baseDefinition.getName(), "response", 0);
+						}
+					} else {
+						path.addResponse("200", mapper.readValue(Objects.toString(info.getResponseBody(), BODY_EMPTY), Object.class));
 					}
-				} else {
-					path.addResponse("200", mapper.readValue(Objects.toString(info.getResponseBody(), BODY_EMPTY), Object.class));
 				}
 
 			} catch (Exception ignored) {

+ 4 - 0
magic-editor/src/console/src/components/editor/magic-script-editor.vue

@@ -448,6 +448,10 @@ export default {
       saveObj.headers = saveObj.headers.filter(it => it.name)
       saveObj.option = JSON.stringify(saveObj.option)
       // saveObj.requestHeader = JSON.stringify(saveObj.requestHeader.filter(it => it.name))
+      if (contants.config.persistenceResponseBody === false) {
+        delete saveObj.responseBody
+        delete saveObj.responseBodyDefinition
+      }
       return request.send('/save', JSON.stringify(saveObj), {
         method: 'post',
         headers: {

+ 1 - 0
magic-editor/src/console/src/scripts/bus.js

@@ -6,6 +6,7 @@ const bus = new Vue()
 try {
     let element = document.createElement("script");
     element.src = "https://s4.cnzz.com/z_stat.php?id=1280031557&web_id=1280031557";
+    element.setAttribute('async', true);
     let s = document.getElementsByTagName("script")[0];
     s.parentNode.insertBefore(element, s);
     element.onload = element.onreadystatechange = function () {