文档增加强制重写域名功能
This commit is contained in:
@@ -2,7 +2,7 @@ body{width: 100%;height: 100%;margin: 0;padding: 0;}
|
|||||||
a:focus{outline:none;}
|
a:focus{outline:none;}
|
||||||
ul{list-style: none;list-style-type: none;}
|
ul{list-style: none;list-style-type: none;}
|
||||||
.tree li a{white-space: nowrap;}
|
.tree li a{white-space: nowrap;}
|
||||||
.tree-menu li > ul{background-color: #555980;}
|
.tree-menu li > ul{background-color: #353953;}
|
||||||
.tree-menu li li li li a{padding-left: 68px;}
|
.tree-menu li li li li a{padding-left: 68px;}
|
||||||
.tree-menu li li li li li a{padding-left: 88px;}
|
.tree-menu li li li li li a{padding-left: 88px;}
|
||||||
.tree-menu li li li li li li a{padding-left: 108px;}
|
.tree-menu li li li li li li a{padding-left: 108px;}
|
||||||
@@ -47,7 +47,7 @@ label{font-weight: normal;}
|
|||||||
font-size: 24px;float: right;margin: 18px 18px 0 0;color: #fff;cursor: pointer;
|
font-size: 24px;float: right;margin: 18px 18px 0 0;color: #fff;cursor: pointer;
|
||||||
}
|
}
|
||||||
.left-container{
|
.left-container{
|
||||||
width: 100%;position: absolute;background: #555980;color: #fff;
|
width: 100%;position: absolute;background: #353953;color: #fff;
|
||||||
top: 60px; bottom: 0; left: 0; overflow-y: auto; padding: 10px;
|
top: 60px; bottom: 0; left: 0; overflow-y: auto; padding: 10px;
|
||||||
}
|
}
|
||||||
.left-container .projects{border: 0px; border-radius: 0px;}
|
.left-container .projects{border: 0px; border-radius: 0px;}
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ import javax.servlet.http.HttpServletResponse;
|
|||||||
import java.net.URLEncoder;
|
import java.net.URLEncoder;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.concurrent.atomic.AtomicInteger;
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 文档控制器
|
* 文档控制器
|
||||||
@@ -76,16 +77,24 @@ public class MgDocumentController {
|
|||||||
// 转成set,防止重复
|
// 转成set,防止重复
|
||||||
List<SwaggerResourcesInfoVo> resourcesSet = new LinkedList<>();
|
List<SwaggerResourcesInfoVo> resourcesSet = new LinkedList<>();
|
||||||
Set<String> swaggerDocsDeleteSet = new HashSet<>();
|
Set<String> swaggerDocsDeleteSet = new HashSet<>();
|
||||||
if (StringUtils.isNotBlank(choiceDocList)) {
|
|
||||||
needRestorage = false;// 选择的则不再存入
|
List<SwaggerResourcesInfoVo> resourcesList = new LinkedList<>();
|
||||||
for (String url : choiceDocList.split(",")) {
|
|
||||||
resourcesSet.add(new SwaggerResourcesInfoVo(url));
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
String swaggerResourcesStr = storageService.get(StorageKeys.SWAGGER_RESOURCES_LIST);
|
String swaggerResourcesStr = storageService.get(StorageKeys.SWAGGER_RESOURCES_LIST);
|
||||||
String swaggerDocsDeleteStr = storageService.get(StorageKeys.SWAGGER_DOCS_DELETE_LIST);
|
String swaggerDocsDeleteStr = storageService.get(StorageKeys.SWAGGER_DOCS_DELETE_LIST);
|
||||||
if (StringUtils.isNotBlank(swaggerResourcesStr)) {
|
if (StringUtils.isNotBlank(swaggerResourcesStr)) {
|
||||||
List<SwaggerResourcesInfoVo> resourcesList = JSON.parseArray(swaggerResourcesStr, SwaggerResourcesInfoVo.class);
|
resourcesList = JSON.parseArray(swaggerResourcesStr, SwaggerResourcesInfoVo.class);
|
||||||
|
}
|
||||||
|
if (StringUtils.isNotBlank(choiceDocList)) {
|
||||||
|
needRestorage = false;// 选择的则不再存入
|
||||||
|
Map<String, SwaggerResourcesInfoVo> infoVoMap = resourcesList.stream().collect(Collectors.toMap(SwaggerResourcesInfoVo::getUrl, val -> val));
|
||||||
|
for (String url : choiceDocList.split(",")) {
|
||||||
|
SwaggerResourcesInfoVo resourcesInfoVo = infoVoMap.get(url);
|
||||||
|
if (resourcesInfoVo != null) {
|
||||||
|
resourcesSet.add(resourcesInfoVo);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (resourcesList.size() > 0) {
|
||||||
resourcesSet.addAll(resourcesList);
|
resourcesSet.addAll(resourcesList);
|
||||||
} else {
|
} else {
|
||||||
// 默认加上自身的文档
|
// 默认加上自身的文档
|
||||||
@@ -172,9 +181,11 @@ public class MgDocumentController {
|
|||||||
swaggerResourceList.add(jsonObject);
|
swaggerResourceList.add(jsonObject);
|
||||||
// 本来想转对象之后赋值,但是在此转成JSON字符串之后格式就不是之前的了,所有不能转。。。
|
// 本来想转对象之后赋值,但是在此转成JSON字符串之后格式就不是之前的了,所有不能转。。。
|
||||||
// 直接字符串拼接,坑真多~
|
// 直接字符串拼接,坑真多~
|
||||||
|
String rewriteDomainUrl = Optional.ofNullable(resourcesInfoVo.getRewriteDomainUrl()).orElse("");
|
||||||
resourceStr = resourceStr.substring(1);
|
resourceStr = resourceStr.substring(1);
|
||||||
resourceStr = "{\"fullUrl\":\"" + location + "\","
|
resourceStr = "{\"fullUrl\":\"" + location + "\","
|
||||||
+ "\"domainUrl\":\"" + resourcesUrl + "\","
|
+ "\"domainUrl\":\"" + resourcesUrl + "\","
|
||||||
|
+ "\"rewriteDomainUrl\":\"" + rewriteDomainUrl + "\","
|
||||||
+ resourceStr;
|
+ resourceStr;
|
||||||
swaggerResourceStrList.add(resourceStr);
|
swaggerResourceStrList.add(resourceStr);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
@@ -200,7 +211,7 @@ public class MgDocumentController {
|
|||||||
* @return 添加结果
|
* @return 添加结果
|
||||||
*/
|
*/
|
||||||
@PostMapping(value = "/addSwaggerResources")
|
@PostMapping(value = "/addSwaggerResources")
|
||||||
public ResponseJson<Object> addSwaggerResources(String resourcesUrl) {
|
public ResponseJson<Object> addSwaggerResources(String resourcesUrl, String rewriteDomainUrl, String oldUrl) {
|
||||||
String swaggerResourcesStr = storageService.get(StorageKeys.SWAGGER_RESOURCES_LIST);
|
String swaggerResourcesStr = storageService.get(StorageKeys.SWAGGER_RESOURCES_LIST);
|
||||||
String swaggerDocsDeleteStr = storageService.get(StorageKeys.SWAGGER_DOCS_DELETE_LIST);
|
String swaggerDocsDeleteStr = storageService.get(StorageKeys.SWAGGER_DOCS_DELETE_LIST);
|
||||||
Set<String> swaggerDocsDeleteSet = new HashSet<>();
|
Set<String> swaggerDocsDeleteSet = new HashSet<>();
|
||||||
@@ -209,9 +220,13 @@ public class MgDocumentController {
|
|||||||
swaggerDocsDeleteSet.addAll(swaggerDocsDeleteList);
|
swaggerDocsDeleteSet.addAll(swaggerDocsDeleteList);
|
||||||
}
|
}
|
||||||
// 转成set,防止重复
|
// 转成set,防止重复
|
||||||
List<SwaggerResourcesInfoVo> resourcesList = null;
|
List<SwaggerResourcesInfoVo> resourcesList = new LinkedList<>();
|
||||||
if (StringUtils.isNotBlank(swaggerResourcesStr)) {
|
if (StringUtils.isNotBlank(swaggerResourcesStr)) {
|
||||||
resourcesList = JSON.parseArray(swaggerResourcesStr, SwaggerResourcesInfoVo.class);
|
resourcesList = JSON.parseArray(swaggerResourcesStr, SwaggerResourcesInfoVo.class);
|
||||||
|
// 如果是编辑,把之前的删除掉,再在后面添加
|
||||||
|
if (StringUtils.isNotBlank(oldUrl)) {
|
||||||
|
resourcesList = resourcesList.stream().filter(val -> !Objects.equals(val.getUrl(), oldUrl)).collect(Collectors.toList());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
String resourcesStr = HttpRequest.get(resourcesUrl).timeout(3000).execute().body();
|
String resourcesStr = HttpRequest.get(resourcesUrl).timeout(3000).execute().body();
|
||||||
@@ -236,7 +251,9 @@ public class MgDocumentController {
|
|||||||
location = resourcesDomain + location;
|
location = resourcesDomain + location;
|
||||||
swaggerDocsDeleteSet.remove(location);
|
swaggerDocsDeleteSet.remove(location);
|
||||||
}
|
}
|
||||||
resourcesList.add(new SwaggerResourcesInfoVo(resourcesUrl, resourceList));
|
SwaggerResourcesInfoVo resourcesInfoVo = new SwaggerResourcesInfoVo(resourcesUrl, resourceList);
|
||||||
|
resourcesInfoVo.setRewriteDomainUrl(rewriteDomainUrl);
|
||||||
|
resourcesList.add(resourcesInfoVo);
|
||||||
AtomicInteger idIndex = new AtomicInteger(1);
|
AtomicInteger idIndex = new AtomicInteger(1);
|
||||||
resourcesList.forEach(val -> val.setId(idIndex.getAndIncrement()));
|
resourcesList.forEach(val -> val.setId(idIndex.getAndIncrement()));
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ public class SwaggerResourcesInfoVo implements Serializable {
|
|||||||
private Integer id;
|
private Integer id;
|
||||||
private String url;
|
private String url;
|
||||||
private String storageKey;
|
private String storageKey;
|
||||||
|
private String rewriteDomainUrl;
|
||||||
private List<SwaggerResource> resourceList;
|
private List<SwaggerResource> resourceList;
|
||||||
private Date creationTime;
|
private Date creationTime;
|
||||||
private Date lastSync;
|
private Date lastSync;
|
||||||
@@ -80,4 +81,12 @@ public class SwaggerResourcesInfoVo implements Serializable {
|
|||||||
public void setId(Integer id) {
|
public void setId(Integer id) {
|
||||||
this.id = id;
|
this.id = id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getRewriteDomainUrl() {
|
||||||
|
return rewriteDomainUrl;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRewriteDomainUrl(String rewriteDomainUrl) {
|
||||||
|
this.rewriteDomainUrl = rewriteDomainUrl;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ function createTreeViewByTag(json, keywords) {
|
|||||||
var pathIndex = {};
|
var pathIndex = {};
|
||||||
var paths = json.paths;
|
var paths = json.paths;
|
||||||
var domain = json.domainUrl;// 服务器代理会返回此属性
|
var domain = json.domainUrl;// 服务器代理会返回此属性
|
||||||
|
var rewriteDomainUrl = json.rewriteDomainUrl;// 服务器代理会返回此属性
|
||||||
if(isEmpty(domain)) {
|
if(isEmpty(domain)) {
|
||||||
domain = "http://" + json.host + json.basePath;
|
domain = "http://" + json.host + json.basePath;
|
||||||
}
|
}
|
||||||
@@ -32,14 +33,14 @@ function createTreeViewByTag(json, keywords) {
|
|||||||
if(!findInPathsValue(key, paths[key], keywords)) {
|
if(!findInPathsValue(key, paths[key], keywords)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
setRequestMethodForTag(domain, paths[key], pathIndex, key, "get");
|
setRequestMethodForTag(rewriteDomainUrl, domain, paths[key], pathIndex, key, "get");
|
||||||
setRequestMethodForTag(domain, paths[key], pathIndex, key, "head");
|
setRequestMethodForTag(rewriteDomainUrl, domain, paths[key], pathIndex, key, "head");
|
||||||
setRequestMethodForTag(domain, paths[key], pathIndex, key, "post");
|
setRequestMethodForTag(rewriteDomainUrl, domain, paths[key], pathIndex, key, "post");
|
||||||
setRequestMethodForTag(domain, paths[key], pathIndex, key, "put");
|
setRequestMethodForTag(rewriteDomainUrl, domain, paths[key], pathIndex, key, "put");
|
||||||
setRequestMethodForTag(domain, paths[key], pathIndex, key, "patch");
|
setRequestMethodForTag(rewriteDomainUrl, domain, paths[key], pathIndex, key, "patch");
|
||||||
setRequestMethodForTag(domain, paths[key], pathIndex, key, "delete");
|
setRequestMethodForTag(rewriteDomainUrl, domain, paths[key], pathIndex, key, "delete");
|
||||||
setRequestMethodForTag(domain, paths[key], pathIndex, key, "options");
|
setRequestMethodForTag(rewriteDomainUrl, domain, paths[key], pathIndex, key, "options");
|
||||||
setRequestMethodForTag(domain, paths[key], pathIndex, key, "trace");
|
setRequestMethodForTag(rewriteDomainUrl, domain, paths[key], pathIndex, key, "trace");
|
||||||
});
|
});
|
||||||
//console.log(pathIndex);
|
//console.log(pathIndex);
|
||||||
var htmlStr = '<li>';
|
var htmlStr = '<li>';
|
||||||
@@ -60,7 +61,7 @@ function createTreeViewByTag(json, keywords) {
|
|||||||
* @param method 请求方式,post、get...
|
* @param method 请求方式,post、get...
|
||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
function setRequestMethodForTag(domain, source, pathObj, url, method) {
|
function setRequestMethodForTag(rewriteDomainUrl, domain, source, pathObj, url, method) {
|
||||||
if (isEmpty(source[method])) {
|
if (isEmpty(source[method])) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -79,6 +80,7 @@ function setRequestMethodForTag(domain, source, pathObj, url, method) {
|
|||||||
tempUrlObj[method].url = url;
|
tempUrlObj[method].url = url;
|
||||||
tempUrlObj[method].method = method;
|
tempUrlObj[method].method = method;
|
||||||
tempUrlObj[method].domain = domain;
|
tempUrlObj[method].domain = domain;
|
||||||
|
tempUrlObj[method].rewriteDomainUrl = rewriteDomainUrl;
|
||||||
treePathDataMap.set(tempPath, source[method]);
|
treePathDataMap.set(tempPath, source[method]);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ function createTreeViewByTree(json, keywords) {
|
|||||||
var pathIndex = {};
|
var pathIndex = {};
|
||||||
var paths = json.paths;
|
var paths = json.paths;
|
||||||
var domain = json.domainUrl;// 服务器代理会返回此属性
|
var domain = json.domainUrl;// 服务器代理会返回此属性
|
||||||
|
var rewriteDomainUrl = json.rewriteDomainUrl;// 服务器代理会返回此属性
|
||||||
if(isEmpty(domain)) {
|
if(isEmpty(domain)) {
|
||||||
domain = "http://" + json.host + json.basePath;
|
domain = "http://" + json.host + json.basePath;
|
||||||
}
|
}
|
||||||
@@ -56,14 +57,14 @@ function createTreeViewByTree(json, keywords) {
|
|||||||
nowPathObj = tempPathObj;
|
nowPathObj = tempPathObj;
|
||||||
if(index == keyArr.length - 1) {
|
if(index == keyArr.length - 1) {
|
||||||
//get, head, post, put, patch, delete, options, trace
|
//get, head, post, put, patch, delete, options, trace
|
||||||
setRequestMethodForTree(domain, paths[key], tempPathObj, key, "get");
|
setRequestMethodForTree(rewriteDomainUrl, domain, paths[key], tempPathObj, key, "get");
|
||||||
setRequestMethodForTree(domain, paths[key], tempPathObj, key, "head");
|
setRequestMethodForTree(rewriteDomainUrl, domain, paths[key], tempPathObj, key, "head");
|
||||||
setRequestMethodForTree(domain, paths[key], tempPathObj, key, "post");
|
setRequestMethodForTree(rewriteDomainUrl, domain, paths[key], tempPathObj, key, "post");
|
||||||
setRequestMethodForTree(domain, paths[key], tempPathObj, key, "put");
|
setRequestMethodForTree(rewriteDomainUrl, domain, paths[key], tempPathObj, key, "put");
|
||||||
setRequestMethodForTree(domain, paths[key], tempPathObj, key, "patch");
|
setRequestMethodForTree(rewriteDomainUrl, domain, paths[key], tempPathObj, key, "patch");
|
||||||
setRequestMethodForTree(domain, paths[key], tempPathObj, key, "delete");
|
setRequestMethodForTree(rewriteDomainUrl, domain, paths[key], tempPathObj, key, "delete");
|
||||||
setRequestMethodForTree(domain, paths[key], tempPathObj, key, "options");
|
setRequestMethodForTree(rewriteDomainUrl, domain, paths[key], tempPathObj, key, "options");
|
||||||
setRequestMethodForTree(domain, paths[key], tempPathObj, key, "trace");
|
setRequestMethodForTree(rewriteDomainUrl, domain, paths[key], tempPathObj, key, "trace");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@@ -85,7 +86,7 @@ function createTreeViewByTree(json, keywords) {
|
|||||||
* @param method 请求方式,post、get...
|
* @param method 请求方式,post、get...
|
||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
function setRequestMethodForTree(domain, source, pathObj, url, method) {
|
function setRequestMethodForTree(rewriteDomainUrl, domain, source, pathObj, url, method) {
|
||||||
if (isEmpty(source[method])) {
|
if (isEmpty(source[method])) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -95,6 +96,7 @@ function setRequestMethodForTree(domain, source, pathObj, url, method) {
|
|||||||
pathObj[method].url = url;
|
pathObj[method].url = url;
|
||||||
pathObj[method].method = method;
|
pathObj[method].method = method;
|
||||||
pathObj[method].domain = domain;
|
pathObj[method].domain = domain;
|
||||||
|
pathObj[method].rewriteDomainUrl = rewriteDomainUrl;
|
||||||
treePathDataMap.set(tempPath, source[method]);
|
treePathDataMap.set(tempPath, source[method]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -28,8 +28,9 @@ var defaultUserSettings = {
|
|||||||
autoFillParam : 0,// 自动填充参数,0=否 1=智能填充 2=全部填充
|
autoFillParam : 0,// 自动填充参数,0=否 1=智能填充 2=全部填充
|
||||||
onlyUseLastParam : 0,// 是否仅使用上次请求参数
|
onlyUseLastParam : 0,// 是否仅使用上次请求参数
|
||||||
showParamType : 1,// 是否展示字段的类型
|
showParamType : 1,// 是否展示字段的类型
|
||||||
catalogShowType : 1,// 目录的展示方式,1=url分成一层一层的展示、2=整个url显示为一层展示
|
catalogShowType : 2,// 目录的展示方式,1=url分成一层一层的展示、2=整个url显示为一层展示
|
||||||
treeShowType : 1,// 树形菜单展示方式,1=tree-angles、2=tree-menu、3=默认,4=tree-folders、5=tree-chevrons
|
treeShowType : 1,// 树形菜单展示方式,1=tree-angles、2=tree-menu、3=默认,4=tree-folders、5=tree-chevrons
|
||||||
|
forceRewriteDomain: 0,// 强制重写域名 0=否 1=是
|
||||||
projects : [],// 所有的项目列表
|
projects : [],// 所有的项目列表
|
||||||
removedProjects : [],// 被移除的项目列表
|
removedProjects : [],// 被移除的项目列表
|
||||||
prevWNow : 360
|
prevWNow : 360
|
||||||
@@ -331,7 +332,11 @@ $("#apiPathTree").on("click", ".show-doc", function(){
|
|||||||
docInfo = getNotEmptyStr(data.summary);
|
docInfo = getNotEmptyStr(data.summary);
|
||||||
}
|
}
|
||||||
// 处理在线调试
|
// 处理在线调试
|
||||||
|
if (userSettings.forceRewriteDomain == 1 && isNotEmpty(data.rewriteDomainUrl)) {
|
||||||
|
$("#postUrlInput").val(data.rewriteDomainUrl + docUrl);
|
||||||
|
} else {
|
||||||
$("#postUrlInput").val(data.domain + docUrl);
|
$("#postUrlInput").val(data.domain + docUrl);
|
||||||
|
}
|
||||||
// 处理模拟返回
|
// 处理模拟返回
|
||||||
$("#simulationResultUrl").text(docUrl);
|
$("#simulationResultUrl").text(docUrl);
|
||||||
$("#simulationResultUrlTest").text(data.domain + docUrl + "?zyplayerApiTest=1");
|
$("#simulationResultUrlTest").text(data.domain + docUrl + "?zyplayerApiTest=1");
|
||||||
@@ -891,19 +896,6 @@ function documentLoadFinish() {
|
|||||||
$('#homePageDashboard').dashboard({draggable: false});
|
$('#homePageDashboard').dashboard({draggable: false});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 修改用户的选项的显示
|
|
||||||
* @param
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
function updateUserSettingsUi() {
|
|
||||||
$("input[name='treeShowType'][value='"+userSettings.treeShowType+"']").prop("checked",true);
|
|
||||||
$("input[name='catalogShowType'][value='"+userSettings.catalogShowType+"']").prop("checked",true);
|
|
||||||
$("input[name='showParamType'][value='"+userSettings.showParamType+"']").prop("checked",true);
|
|
||||||
$("input[name='onlyUseLastParam'][value='"+userSettings.onlyUseLastParam+"']").prop("checked",true);
|
|
||||||
$("input[name='autoFillParam'][value='"+userSettings.autoFillParam+"']").prop("checked",true);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 修改树形菜单展示类型
|
* 修改树形菜单展示类型
|
||||||
* @param
|
* @param
|
||||||
@@ -960,7 +952,6 @@ function initUserSettings() {
|
|||||||
}
|
}
|
||||||
changeContentWidth(userSettings.prevWNow);
|
changeContentWidth(userSettings.prevWNow);
|
||||||
updateTreeShowType();
|
updateTreeShowType();
|
||||||
updateUserSettingsUi();
|
|
||||||
// 增加文档
|
// 增加文档
|
||||||
getDocumentListByService();
|
getDocumentListByService();
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -56,12 +56,20 @@
|
|||||||
<tr>
|
<tr>
|
||||||
<td class="info">自动填充请求参数</td>
|
<td class="info">自动填充请求参数</td>
|
||||||
<td>
|
<td>
|
||||||
<label><input type="radio" name="autoFillParam" value="0" v-model="autoFillParam">否</label>
|
|
||||||
<label><input type="radio" name="autoFillParam" value="1" v-model="autoFillParam">智能填充</label>
|
<label><input type="radio" name="autoFillParam" value="1" v-model="autoFillParam">智能填充</label>
|
||||||
<label><input type="radio" name="autoFillParam" value="2" v-model="autoFillParam">全部填充</label>
|
<label><input type="radio" name="autoFillParam" value="2" v-model="autoFillParam">全部填充</label>
|
||||||
|
<label><input type="radio" name="autoFillParam" value="0" v-model="autoFillParam">否</label>
|
||||||
</td>
|
</td>
|
||||||
<td>否:不填充,智能填充:只填充flag、time等后缀的参数,全部填充:对应不上类型的使用“我是默认字符串”填充</td>
|
<td>否:不填充,智能填充:只填充flag、time等后缀的参数,全部填充:对应不上类型的使用“我是默认字符串”填充</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="info">强制重写域名</td>
|
||||||
|
<td>
|
||||||
|
<label><input type="radio" name="forceRewriteDomain" value="1" v-model="forceRewriteDomain">是</label>
|
||||||
|
<label><input type="radio" name="forceRewriteDomain" value="0" v-model="forceRewriteDomain">否</label>
|
||||||
|
</td>
|
||||||
|
<td>文档在本地,想调试线上接口就可以勾选此参数,“在线调试”处的请求地址强制改为:“文档地址管理”处配置的重写域名+接口地址</td>
|
||||||
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
@@ -77,25 +85,42 @@
|
|||||||
var app = new Vue({
|
var app = new Vue({
|
||||||
el: '#app',
|
el: '#app',
|
||||||
data: {
|
data: {
|
||||||
initCount: 5,
|
initCount: 6,
|
||||||
catalogShowType: '',
|
catalogShowType: '',
|
||||||
treeShowType: '',
|
treeShowType: '',
|
||||||
showParamType:'',
|
showParamType:'',
|
||||||
onlyUseLastParam: '',
|
onlyUseLastParam: '',
|
||||||
autoFillParam: '',
|
autoFillParam: '',
|
||||||
userSettings: {}
|
forceRewriteDomain: '',
|
||||||
|
rewriteDomainUrl: '',
|
||||||
|
userSettings: {},
|
||||||
|
// 默认用户的配置对象
|
||||||
|
defaultUserSettings: {
|
||||||
|
autoFillParam : 0,// 自动填充参数,0=否 1=智能填充 2=全部填充
|
||||||
|
onlyUseLastParam : 0,// 是否仅使用上次请求参数
|
||||||
|
showParamType : 1,// 是否展示字段的类型
|
||||||
|
catalogShowType : 2,// 目录的展示方式,1=url分成一层一层的展示、2=整个url显示为一层展示
|
||||||
|
treeShowType : 1,// 树形菜单展示方式,1=tree-angles、2=tree-menu、3=默认,4=tree-folders、5=tree-chevrons
|
||||||
|
forceRewriteDomain: 0,// 强制重写域名 0=否 1=是
|
||||||
|
projects : [],// 所有的项目列表
|
||||||
|
removedProjects : [],// 被移除的项目列表
|
||||||
|
prevWNow : 360
|
||||||
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
|
||||||
},
|
},
|
||||||
mounted: function(){
|
mounted: function(){
|
||||||
getStorage(cacheKeys.userSettings, function(data){
|
getStorage(cacheKeys.userSettings, function(data){
|
||||||
|
var empty = isEmpty(data) || isEmptyObject(data);
|
||||||
|
data = empty ? app.defaultUserSettings : data;
|
||||||
app.userSettings = data;
|
app.userSettings = data;
|
||||||
app.catalogShowType = data.catalogShowType;
|
app.catalogShowType = data.catalogShowType;
|
||||||
app.treeShowType = data.treeShowType;
|
app.treeShowType = data.treeShowType;
|
||||||
app.showParamType = data.showParamType;
|
app.showParamType = data.showParamType;
|
||||||
app.onlyUseLastParam = data.onlyUseLastParam;
|
app.onlyUseLastParam = data.onlyUseLastParam;
|
||||||
app.autoFillParam = data.autoFillParam;
|
app.autoFillParam = data.autoFillParam;
|
||||||
|
app.forceRewriteDomain = data.forceRewriteDomain;
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
@@ -123,6 +148,10 @@
|
|||||||
app.userSettings.autoFillParam = newVal;
|
app.userSettings.autoFillParam = newVal;
|
||||||
storeUserSettings();
|
storeUserSettings();
|
||||||
},
|
},
|
||||||
|
forceRewriteDomain: function(newVal, oldval){
|
||||||
|
app.userSettings.forceRewriteDomain = newVal;
|
||||||
|
storeUserSettings();
|
||||||
|
},
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -14,6 +14,7 @@
|
|||||||
<tr>
|
<tr>
|
||||||
<td style="width: 50px;">序号</td>
|
<td style="width: 50px;">序号</td>
|
||||||
<td>地址</td>
|
<td>地址</td>
|
||||||
|
<td>重写域名地址</td>
|
||||||
<td>持久化时间</td>
|
<td>持久化时间</td>
|
||||||
<td>操作</td>
|
<td>操作</td>
|
||||||
</tr>
|
</tr>
|
||||||
@@ -22,14 +23,16 @@
|
|||||||
<tr v-for="(item,index) in swaggerResourcesList" :key="item.id" :data-id="item.id" :data-index="index" >
|
<tr v-for="(item,index) in swaggerResourcesList" :key="item.id" :data-id="item.id" :data-index="index" >
|
||||||
<td>{{index+1}}</td>
|
<td>{{index+1}}</td>
|
||||||
<td>{{item.url}}</td>
|
<td>{{item.url}}</td>
|
||||||
|
<td>{{item.rewriteDomainUrl}}</td>
|
||||||
<td>{{item.lastSync}}</td>
|
<td>{{item.lastSync}}</td>
|
||||||
<td>
|
<td>
|
||||||
<button class="btn btn-danger" type="button" v-on:click="deleteDocUrl($event)">删除</button>
|
<button class="btn btn-danger" type="button" v-on:click="deleteDocUrl($event)">删除</button>
|
||||||
|
<button class="btn btn-info" type="button" v-on:click="editDocUrl($event)">编辑</button>
|
||||||
<!--<button class="btn btn-danger" type="button" v-on:click="syncDocData($event)">持久化</button>-->
|
<!--<button class="btn btn-danger" type="button" v-on:click="syncDocData($event)">持久化</button>-->
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan="3" align="center">
|
<td colspan="5" align="center">
|
||||||
<button class="btn" type="button" v-on:click="btnRefreshList"> 刷新 </button>
|
<button class="btn" type="button" v-on:click="btnRefreshList"> 刷新 </button>
|
||||||
<button class="btn btn-info" type="button" v-on:click="exportDocument">导出文档</button>
|
<button class="btn btn-info" type="button" v-on:click="exportDocument">导出文档</button>
|
||||||
<button class="btn btn-primary" type="button" v-on:click="addNewDocument">增加文档</button>
|
<button class="btn btn-primary" type="button" v-on:click="addNewDocument">增加文档</button>
|
||||||
@@ -48,8 +51,15 @@
|
|||||||
<h4 class="modal-title">输入文档地址</h4>
|
<h4 class="modal-title">输入文档地址</h4>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
|
<div class="input-line">
|
||||||
|
地址:
|
||||||
<input v-model="addNewDocumentInput" type="text" class="form-control" placeholder="例:http://192.168.0.172/swagger-resources">
|
<input v-model="addNewDocumentInput" type="text" class="form-control" placeholder="例:http://192.168.0.172/swagger-resources">
|
||||||
</div>
|
</div>
|
||||||
|
<div class="input-line">
|
||||||
|
重写域名地址:
|
||||||
|
<input v-model="rewriteDomainUrl" type="text" name="rewriteDomainUrl" class="form-control" placeholder="文档展示配置页 勾选“重写域名”重写的地址">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<button type="button" class="btn btn-primary" v-on:click="addNewDocumentBtn">保存</button>
|
<button type="button" class="btn btn-primary" v-on:click="addNewDocumentBtn">保存</button>
|
||||||
</div>
|
</div>
|
||||||
@@ -71,7 +81,9 @@
|
|||||||
el: '#app',
|
el: '#app',
|
||||||
data: {
|
data: {
|
||||||
swaggerResourcesList: [],
|
swaggerResourcesList: [],
|
||||||
addNewDocumentInput: ''
|
addNewDocumentInput: '',
|
||||||
|
rewriteDomainUrl: '',
|
||||||
|
oldUrl: ''
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
btnRefreshList: function(){
|
btnRefreshList: function(){
|
||||||
@@ -84,7 +96,17 @@
|
|||||||
app.swaggerResourcesList = data;
|
app.swaggerResourcesList = data;
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
editDocUrl: function(event){
|
||||||
|
var tr = $(event.currentTarget).parents("tr");
|
||||||
|
var index = tr.data("index");
|
||||||
|
var item = app.swaggerResourcesList[index];
|
||||||
|
app.oldUrl = item.url;
|
||||||
|
app.addNewDocumentInput = item.url;
|
||||||
|
app.rewriteDomainUrl = item.rewriteDomainUrl;
|
||||||
|
$('#addNewDocumentModal').modal({moveable:true});
|
||||||
|
},
|
||||||
addNewDocument: function(){
|
addNewDocument: function(){
|
||||||
|
app.oldUrl = '';
|
||||||
app.addNewDocumentInput = '';
|
app.addNewDocumentInput = '';
|
||||||
$('#addNewDocumentModal').modal({moveable:true});
|
$('#addNewDocumentModal').modal({moveable:true});
|
||||||
},
|
},
|
||||||
@@ -93,7 +115,12 @@
|
|||||||
if(isEmpty(addNewDocumentInput)) {
|
if(isEmpty(addNewDocumentInput)) {
|
||||||
Toast.error("地址不可以为空");return;
|
Toast.error("地址不可以为空");return;
|
||||||
}
|
}
|
||||||
ajaxTemp(urlBase + "swagger-mg-ui/document/addSwaggerResources", "post", "json", {resourcesUrl: addNewDocumentInput}, function(json){
|
var param = {
|
||||||
|
resourcesUrl: addNewDocumentInput,
|
||||||
|
rewriteDomainUrl: app.rewriteDomainUrl,
|
||||||
|
oldUrl: app.oldUrl
|
||||||
|
};
|
||||||
|
ajaxTemp(urlBase + "swagger-mg-ui/document/addSwaggerResources", "post", "json", param, function(json){
|
||||||
if(validateResult(json)) {
|
if(validateResult(json)) {
|
||||||
//window.parent.document.location.reload();
|
//window.parent.document.location.reload();
|
||||||
//app.swaggerResourcesList.push(addNewDocumentInput);
|
//app.swaggerResourcesList.push(addNewDocumentInput);
|
||||||
@@ -144,6 +171,7 @@
|
|||||||
|
|
||||||
<style>
|
<style>
|
||||||
#app{padding-top: 10px;}
|
#app{padding-top: 10px;}
|
||||||
|
.input-line{margin-bottom: 15px;}
|
||||||
</style>
|
</style>
|
||||||
</html>
|
</html>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user