body参数支持数组,cookie参数支持
This commit is contained in:
@@ -7,6 +7,7 @@ import cn.hutool.http.Method;
|
|||||||
import com.zyplayer.doc.core.exception.ConfirmException;
|
import com.zyplayer.doc.core.exception.ConfirmException;
|
||||||
import com.zyplayer.doc.data.repository.manage.entity.SwaggerGlobalParam;
|
import com.zyplayer.doc.data.repository.manage.entity.SwaggerGlobalParam;
|
||||||
import com.zyplayer.doc.data.service.manage.SwaggerGlobalParamService;
|
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.param.ProxyRequestParam;
|
||||||
import com.zyplayer.doc.swaggerplus.controller.vo.HttpCookieVo;
|
import com.zyplayer.doc.swaggerplus.controller.vo.HttpCookieVo;
|
||||||
import com.zyplayer.doc.swaggerplus.controller.vo.HttpHeaderVo;
|
import com.zyplayer.doc.swaggerplus.controller.vo.HttpHeaderVo;
|
||||||
@@ -60,7 +61,7 @@ public class SwaggerHttpRequestService {
|
|||||||
.form(globalFormParamMap)
|
.form(globalFormParamMap)
|
||||||
.addHeaders(requestHeaders)
|
.addHeaders(requestHeaders)
|
||||||
.header("Accept", "application/json, text/javascript, */*; q=0.01")
|
.header("Accept", "application/json, text/javascript, */*; q=0.01")
|
||||||
.cookie(this.getHttpCookie(request, globalCookieParamMap))
|
.cookie(this.getHttpCookie(request, globalCookieParamMap, null))
|
||||||
.timeout(10000).execute().body();
|
.timeout(10000).execute().body();
|
||||||
return resultStr;
|
return resultStr;
|
||||||
}
|
}
|
||||||
@@ -82,25 +83,30 @@ public class SwaggerHttpRequestService {
|
|||||||
}
|
}
|
||||||
HttpRequest httpRequest = HttpUtil.createRequest(method, requestParam.getUrl());
|
HttpRequest httpRequest = HttpUtil.createRequest(method, requestParam.getUrl());
|
||||||
// header获取
|
// header获取
|
||||||
Map<String, String> requestHeaders = this.getHttpHeader(request, Collections.emptyMap());
|
Map<String, String> headerParam = new HashMap<>();
|
||||||
|
requestParam.getHeaderParamData().forEach(item -> headerParam.put(item.getCode(), item.getValue()));
|
||||||
|
Map<String, String> requestHeaders = this.getHttpHeader(request, headerParam);
|
||||||
if (StringUtils.isNotBlank(requestParam.getHost())) {
|
if (StringUtils.isNotBlank(requestParam.getHost())) {
|
||||||
domainHeaderKeys.forEach(key -> requestHeaders.put(key, requestParam.getHost()));
|
domainHeaderKeys.forEach(key -> requestHeaders.put(key, requestParam.getHost()));
|
||||||
requestHeaders.put("host", SwaggerDocUtil.getDomainHost(requestParam.getHost()));
|
requestHeaders.put("host", SwaggerDocUtil.getDomainHost(requestParam.getHost()));
|
||||||
}
|
}
|
||||||
// http自带参数
|
// http自带参数
|
||||||
httpRequest.addHeaders(requestHeaders);
|
httpRequest.addHeaders(requestHeaders);
|
||||||
httpRequest.cookie(this.getHttpCookie(request, Collections.emptyMap()));
|
|
||||||
// 用户输入的参数
|
// 用户输入的参数
|
||||||
requestParam.getFormParamData().forEach(data -> httpRequest.form(data.getCode(), data.getValue()));
|
requestParam.getFormParamData().forEach(data -> httpRequest.form(data.getCode(), data.getValue()));
|
||||||
requestParam.getFormEncodeParamData().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<String, String> 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())) {
|
if (StringUtils.isNotBlank(requestParam.getBodyParam())) {
|
||||||
httpRequest.body(requestParam.getBodyParam());
|
httpRequest.body(requestParam.getBodyParam());
|
||||||
}
|
}
|
||||||
// 强制设置类型
|
// 强制设置类型,貌似不用刻意设置,如果写的application/json,参数是表单,传过去收不到值,先注释这个
|
||||||
if (StringUtils.isNotBlank(requestParam.getContentType())) {
|
// if (StringUtils.isNotBlank(requestParam.getContentType())) {
|
||||||
httpRequest.contentType(requestParam.getContentType());
|
// httpRequest.contentType(requestParam.getContentType());
|
||||||
}
|
// }
|
||||||
// 执行请求
|
// 执行请求
|
||||||
HttpResponse httpResponse = httpRequest.timeout(10000).execute();
|
HttpResponse httpResponse = httpRequest.timeout(10000).execute();
|
||||||
resultVo.setData(httpResponse.body());
|
resultVo.setData(httpResponse.body());
|
||||||
@@ -137,11 +143,18 @@ public class SwaggerHttpRequestService {
|
|||||||
* @author 暮光:城中城
|
* @author 暮光:城中城
|
||||||
* @since 2021-11-04
|
* @since 2021-11-04
|
||||||
*/
|
*/
|
||||||
private List<HttpCookie> getHttpCookie(HttpServletRequest request, Map<String, String> globalCookieParamMap) {
|
private List<HttpCookie> getHttpCookie(HttpServletRequest request, Map<String, String> globalCookieParamMap, String headerCookie) {
|
||||||
List<HttpCookie> httpCookies = new LinkedList<>();
|
List<HttpCookie> httpCookies = new LinkedList<>();
|
||||||
for (Cookie cookie : request.getCookies()) {
|
for (Cookie cookie : request.getCookies()) {
|
||||||
httpCookies.add(new HttpCookie(cookie.getName(), cookie.getValue()));
|
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)) {
|
if (MapUtils.isNotEmpty(globalCookieParamMap)) {
|
||||||
globalCookieParamMap.forEach((key, value) -> httpCookies.add(new HttpCookie(key, value)));
|
globalCookieParamMap.forEach((key, value) -> httpCookies.add(new HttpCookie(key, value)));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -35,12 +35,17 @@
|
|||||||
let getChildren = paramObj => {
|
let getChildren = paramObj => {
|
||||||
if (paramObj.children) {
|
if (paramObj.children) {
|
||||||
let bodyParamObj = {};
|
let bodyParamObj = {};
|
||||||
paramObj.children.forEach(item => {
|
paramObj.children.forEach(item => bodyParamObj[item.name] = getChildren(item));
|
||||||
bodyParamObj[item.name] = getChildren(item);
|
if (paramObj.type === 'array') {
|
||||||
});
|
return [bodyParamObj];
|
||||||
|
}
|
||||||
return bodyParamObj;
|
return bodyParamObj;
|
||||||
}
|
}
|
||||||
return paramObj.example || '';
|
let example = paramObj.example || '';
|
||||||
|
if (paramObj.type === 'array') {
|
||||||
|
return example ? [example] : [];
|
||||||
|
}
|
||||||
|
return example;
|
||||||
}
|
}
|
||||||
if (paramList.length === 1) {
|
if (paramList.length === 1) {
|
||||||
bodyParamObj = getChildren(paramList[0]);
|
bodyParamObj = getChildren(paramList[0]);
|
||||||
|
|||||||
Reference in New Issue
Block a user