增加对OpenApi文档的解析支持

This commit is contained in:
暮光:城中城
2021-11-29 23:16:55 +08:00
parent 91aef6f9f4
commit f587f7c54b
13 changed files with 597 additions and 62 deletions

View File

@@ -14,6 +14,7 @@
</div>
<template v-if="docChoice && docChoice.docType">
<DocTreeSwagger v-if="docChoice.docType === 1 || docChoice.docType === 2" ref="swaggerRef"></DocTreeSwagger>
<DocTreeOpenApi v-if="docChoice.docType === 3 || docChoice.docType === 4" ref="openApiRef"></DocTreeOpenApi>
</template>
</a-spin>
</div>
@@ -28,6 +29,7 @@
import MenuChildrenLayout from './MenuChildrenLayout.vue'
import {zyplayerApi} from '../../api'
import DocTreeSwagger from './doc-tree/Swagger.vue'
import DocTreeOpenApi from './doc-tree/OpenApi.vue'
export default {
props: {
@@ -36,7 +38,7 @@
default: false
},
},
components: {MenuChildrenLayout, DocTreeSwagger},
components: {MenuChildrenLayout, DocTreeSwagger, DocTreeOpenApi},
setup(props) {
const store = useStore();
const route = useRoute();
@@ -132,6 +134,7 @@
docChoiceId,
searchKeywords,
swaggerRef,
openApiRef,
docChoice,
docChoiceChange,
};

View File

@@ -23,7 +23,7 @@
import {useStore} from 'vuex';
import { message } from 'ant-design-vue';
import {zyplayerApi} from '../../../api'
import {analysisSwaggerData, getTreeDataForTag} from '../../../assets/core/SwaggerTreeAnalysis.js'
import {analysisOpenApiData, getTreeDataForTag} from '../../../assets/core/OpenApiTreeAnalysis.js'
export default {
setup() {
@@ -32,7 +32,7 @@
const router = useRouter();
let tagPathMap = ref({});
let swaggerDoc = ref({});
let openApiDoc = ref({});
let treeData = ref([]);
let expandedKeys = ref([]);
let choiceDocId = ref('');
@@ -40,10 +40,10 @@
const docChecked = (val, node) => {
if (node.node.key === 'main') {
router.push({path: '/swagger/info'});
router.push({path: '/openapi/info'});
} else if (node.node.isLeaf) {
let dataRef = node.node.dataRef;
router.push({path: '/swagger/view', query: dataRef.query});
router.push({path: '/openapi/view', query: dataRef.query});
}
};
const loadDoc = (docId, keyword, callback) => {
@@ -51,22 +51,22 @@
searchKeywords.value = keyword;
zyplayerApi.apiDocApisDetail({id: docId}).then(res => {
let v2Doc = toJsonObj(res.data);
if (typeof v2Doc !== 'object' || !v2Doc.swagger) {
if (typeof v2Doc !== 'object' || !v2Doc.openapi) {
message.error('获取文档数据请求失败');
return;
}
swaggerDoc.value = v2Doc;
store.commit('setSwaggerDoc', v2Doc);
let treeData = analysisSwaggerData(v2Doc);
store.commit('setSwaggerUrlMethodMap', treeData.urlMethodMap);
store.commit('setMethodStatistic', treeData.methodStatistic);
openApiDoc.value = v2Doc;
store.commit('setOpenApiDoc', v2Doc);
let treeData = analysisOpenApiData(v2Doc);
store.commit('setOpenApiUrlMethodMap', treeData.urlMethodMap);
store.commit('setOpenApiMethodStatistic', treeData.methodStatistic);
tagPathMap.value = treeData.tagPathMap;
loadTreeData();
callback();
setTimeout(() => {
let isViewPage = (route.path === '/swagger/view' && route.query.id);
let isViewPage = (route.path === '/openapi/view' && route.query.id);
if (!isViewPage) {
router.push({path: '/swagger/info'});
router.push({path: '/openapi/info'});
}
}, 0);
});
@@ -74,7 +74,7 @@
const loadTreeData = () => {
expandedKeys.value = ['main'];
let metaInfo = {id: choiceDocId.value};
treeData.value = getTreeDataForTag(swaggerDoc.value, tagPathMap.value, searchKeywords.value, metaInfo);
treeData.value = getTreeDataForTag(openApiDoc.value, tagPathMap.value, searchKeywords.value, metaInfo);
};
const toJsonObj = (value) => {
if (typeof value !== 'string') {

View File

@@ -60,7 +60,7 @@
store.commit('setSwaggerDoc', v2Doc);
let treeData = analysisSwaggerData(v2Doc);
store.commit('setSwaggerUrlMethodMap', treeData.urlMethodMap);
store.commit('setMethodStatistic', treeData.methodStatistic);
store.commit('setSwaggerMethodStatistic', treeData.methodStatistic);
tagPathMap.value = treeData.tagPathMap;
loadTreeData();
callback(true);