From 265ad08d3e7ebfdc65bdffa3d62bff3a1da16683 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9A=AE=E5=85=89=EF=BC=9A=E5=9F=8E=E4=B8=AD=E5=9F=8E?= <806783409@qq.com> Date: Mon, 8 Nov 2021 23:18:34 +0800 Subject: [PATCH] =?UTF-8?q?body=E5=8F=82=E6=95=B0=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E6=95=B0=E7=BB=84=EF=BC=8Ccookie=E5=8F=82=E6=95=B0=E6=94=AF?= =?UTF-8?q?=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/SwaggerHttpRequestService.java | 31 +++++++++++++------ .../src/components/params/ParamBody.vue | 13 +++++--- 2 files changed, 31 insertions(+), 13 deletions(-) diff --git a/zyplayer-doc-swagger-plus/src/main/java/com/zyplayer/doc/swaggerplus/service/SwaggerHttpRequestService.java b/zyplayer-doc-swagger-plus/src/main/java/com/zyplayer/doc/swaggerplus/service/SwaggerHttpRequestService.java index a5067f5d..55f6abc6 100644 --- a/zyplayer-doc-swagger-plus/src/main/java/com/zyplayer/doc/swaggerplus/service/SwaggerHttpRequestService.java +++ b/zyplayer-doc-swagger-plus/src/main/java/com/zyplayer/doc/swaggerplus/service/SwaggerHttpRequestService.java @@ -7,6 +7,7 @@ import cn.hutool.http.Method; import com.zyplayer.doc.core.exception.ConfirmException; import com.zyplayer.doc.data.repository.manage.entity.SwaggerGlobalParam; import com.zyplayer.doc.data.service.manage.SwaggerGlobalParamService; +import com.zyplayer.doc.swaggerplus.controller.param.ParamData; import com.zyplayer.doc.swaggerplus.controller.param.ProxyRequestParam; import com.zyplayer.doc.swaggerplus.controller.vo.HttpCookieVo; import com.zyplayer.doc.swaggerplus.controller.vo.HttpHeaderVo; @@ -60,7 +61,7 @@ public class SwaggerHttpRequestService { .form(globalFormParamMap) .addHeaders(requestHeaders) .header("Accept", "application/json, text/javascript, */*; q=0.01") - .cookie(this.getHttpCookie(request, globalCookieParamMap)) + .cookie(this.getHttpCookie(request, globalCookieParamMap, null)) .timeout(10000).execute().body(); return resultStr; } @@ -82,25 +83,30 @@ public class SwaggerHttpRequestService { } HttpRequest httpRequest = HttpUtil.createRequest(method, requestParam.getUrl()); // header获取 - Map requestHeaders = this.getHttpHeader(request, Collections.emptyMap()); + Map headerParam = new HashMap<>(); + requestParam.getHeaderParamData().forEach(item -> headerParam.put(item.getCode(), item.getValue())); + Map requestHeaders = this.getHttpHeader(request, headerParam); if (StringUtils.isNotBlank(requestParam.getHost())) { domainHeaderKeys.forEach(key -> requestHeaders.put(key, requestParam.getHost())); requestHeaders.put("host", SwaggerDocUtil.getDomainHost(requestParam.getHost())); } // http自带参数 httpRequest.addHeaders(requestHeaders); - httpRequest.cookie(this.getHttpCookie(request, Collections.emptyMap())); // 用户输入的参数 requestParam.getFormParamData().forEach(data -> httpRequest.form(data.getCode(), data.getValue())); requestParam.getFormEncodeParamData().forEach(data -> httpRequest.form(data.getCode(), data.getValue())); - requestParam.getHeaderParamData().forEach(data -> httpRequest.header(data.getCode(), data.getValue())); + // cookie参数 + Map cookieParam = new HashMap<>(); + String headerCookie = headerParam.getOrDefault("Cookie", headerParam.get("cookie")); + requestParam.getCookieParamData().forEach(item -> cookieParam.put(item.getCode(), item.getValue())); + httpRequest.cookie(this.getHttpCookie(request, cookieParam, headerCookie)); if (StringUtils.isNotBlank(requestParam.getBodyParam())) { httpRequest.body(requestParam.getBodyParam()); } - // 强制设置类型 - if (StringUtils.isNotBlank(requestParam.getContentType())) { - httpRequest.contentType(requestParam.getContentType()); - } + // 强制设置类型,貌似不用刻意设置,如果写的application/json,参数是表单,传过去收不到值,先注释这个 +// if (StringUtils.isNotBlank(requestParam.getContentType())) { +// httpRequest.contentType(requestParam.getContentType()); +// } // 执行请求 HttpResponse httpResponse = httpRequest.timeout(10000).execute(); resultVo.setData(httpResponse.body()); @@ -137,11 +143,18 @@ public class SwaggerHttpRequestService { * @author 暮光:城中城 * @since 2021-11-04 */ - private List getHttpCookie(HttpServletRequest request, Map globalCookieParamMap) { + private List getHttpCookie(HttpServletRequest request, Map globalCookieParamMap, String headerCookie) { List httpCookies = new LinkedList<>(); for (Cookie cookie : request.getCookies()) { httpCookies.add(new HttpCookie(cookie.getName(), cookie.getValue())); } + if (StringUtils.isNotBlank(headerCookie)) { + for (String cookie : headerCookie.split(";")) { + cookie = cookie.trim(); + int index = cookie.indexOf("="); + httpCookies.add(new HttpCookie(cookie.substring(0, index), cookie.substring(index + 1))); + } + } if (MapUtils.isNotEmpty(globalCookieParamMap)) { globalCookieParamMap.forEach((key, value) -> httpCookies.add(new HttpCookie(key, value))); } diff --git a/zyplayer-doc-ui/swagger-ui/src/components/params/ParamBody.vue b/zyplayer-doc-ui/swagger-ui/src/components/params/ParamBody.vue index bd0aa13d..0248ecb2 100644 --- a/zyplayer-doc-ui/swagger-ui/src/components/params/ParamBody.vue +++ b/zyplayer-doc-ui/swagger-ui/src/components/params/ParamBody.vue @@ -35,12 +35,17 @@ let getChildren = paramObj => { if (paramObj.children) { let bodyParamObj = {}; - paramObj.children.forEach(item => { - bodyParamObj[item.name] = getChildren(item); - }); + paramObj.children.forEach(item => bodyParamObj[item.name] = getChildren(item)); + if (paramObj.type === 'array') { + return [bodyParamObj]; + } return bodyParamObj; } - return paramObj.example || ''; + let example = paramObj.example || ''; + if (paramObj.type === 'array') { + return example ? [example] : []; + } + return example; } if (paramList.length === 1) { bodyParamObj = getChildren(paramList[0]);