From ecacfa64afe39088c733a2efdacb0e77b173dcc4 Mon Sep 17 00:00:00 2001 From: mxd <838425805@qq.com> Date: Sat, 16 Oct 2021 10:53:06 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8C=81=E4=B9=85=E5=8C=96=E4=BF=9D=E5=AD=98`R?= =?UTF-8?q?esponseBody`=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../boot/starter/MagicAPIProperties.java | 15 ++++++++++++ .../starter/MagicSwaggerConfiguration.java | 1 + .../magicapi/swagger/SwaggerProvider.java | 23 ++++++++++++------- .../components/editor/magic-script-editor.vue | 4 ++++ magic-editor/src/console/src/scripts/bus.js | 1 + 5 files changed, 36 insertions(+), 8 deletions(-) diff --git a/magic-api-spring-boot-starter/src/main/java/org/ssssssss/magicapi/spring/boot/starter/MagicAPIProperties.java b/magic-api-spring-boot-starter/src/main/java/org/ssssssss/magicapi/spring/boot/starter/MagicAPIProperties.java index 0d658dda..040ed54a 100644 --- a/magic-api-spring-boot-starter/src/main/java/org/ssssssss/magicapi/spring/boot/starter/MagicAPIProperties.java +++ b/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; + } } diff --git a/magic-api-spring-boot-starter/src/main/java/org/ssssssss/magicapi/spring/boot/starter/MagicSwaggerConfiguration.java b/magic-api-spring-boot-starter/src/main/java/org/ssssssss/magicapi/spring/boot/starter/MagicSwaggerConfiguration.java index 75b94436..60099afa 100644 --- a/magic-api-spring-boot-starter/src/main/java/org/ssssssss/magicapi/spring/boot/starter/MagicSwaggerConfiguration.java +++ b/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()); diff --git a/magic-api/src/main/java/org/ssssssss/magicapi/swagger/SwaggerProvider.java b/magic-api/src/main/java/org/ssssssss/magicapi/swagger/SwaggerProvider.java index 229e143b..91a680e8 100644 --- a/magic-api/src/main/java/org/ssssssss/magicapi/swagger/SwaggerProvider.java +++ b/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) { diff --git a/magic-editor/src/console/src/components/editor/magic-script-editor.vue b/magic-editor/src/console/src/components/editor/magic-script-editor.vue index 38362da5..cf8c787a 100644 --- a/magic-editor/src/console/src/components/editor/magic-script-editor.vue +++ b/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: { diff --git a/magic-editor/src/console/src/scripts/bus.js b/magic-editor/src/console/src/scripts/bus.js index 45faa455..b7460fd8 100644 --- a/magic-editor/src/console/src/scripts/bus.js +++ b/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 () {