openapi接口文档解析支持

This commit is contained in:
暮光:城中城
2021-12-28 23:58:43 +08:00
parent bc7ae4fc67
commit 74b1b417ad
34 changed files with 196 additions and 3150 deletions

View File

@@ -9,7 +9,9 @@
<a-radio :value="2">Swagger JSON</a-radio>
<a-radio :value="3">OpenApi URL</a-radio>
<a-radio :value="4">OpenApi JSON</a-radio>
<a-radio :value="5">自建API</a-radio>
<a-tooltip title="即将上线,敬请期待">
<a-radio :value="5" disabled>自建API</a-radio>
</a-tooltip>
</a-radio-group>
</a-form-item>
<a-form-item label="文档地址" required name="docUrl" v-if="docEdit.docType === 1">

View File

@@ -87,9 +87,9 @@
produces: produces,
};
// 解析请求参数
let definitionsDataMap = store.state.openApiDefinitions;
requestParamList.value = openApiAnalysis.getRequestParamList(docInfo.parameters, definitionsDataMap);
responseParamList.value = openApiAnalysis.getResponseParamList(docInfo.responses, definitionsDataMap);
let openApiComponents = store.state.openApiComponents;
requestParamList.value = openApiAnalysis.getRequestParamList(docInfo.parameters, openApiComponents);
responseParamList.value = openApiAnalysis.getResponseParamList(docInfo.responses, openApiComponents);
}
onMounted(() => {
initLoadDocument();

View File

@@ -42,8 +42,8 @@
</template>
</template>
<template #expandedRowRender="{ record }">
<template v-if="record.schemas">
<a-table :dataSource="record.schemas" :columns="responseParamListColumns" size="small" :pagination="false">
<template v-if="record.childrens">
<a-table :dataSource="record.childrens" :columns="responseMediaTypeColumns" size="small" :pagination="false">
<template #bodyCell="{ column, text, record }">
<template v-if="column.dataIndex === 'type'">
{{text}}
@@ -51,9 +51,23 @@
<template v-if="record.format">({{record.format}})</template>
</template>
</template>
<template #expandedRowRender="{ record }">
<template v-if="record.schemas">
<a-table :dataSource="record.schemas" :columns="responseParamListColumns" size="small" :pagination="false">
<template #bodyCell="{ column, text, record }">
<template v-if="column.dataIndex === 'type'">
{{text}}
<template v-if="record.subType">[{{record.subType}}]</template>
<template v-if="record.format">({{record.format}})</template>
</template>
</template>
</a-table>
</template>
<div v-else style="text-align: center;padding: 10px 0;">无结果说明</div>
</template>
</a-table>
</template>
<div v-else style="text-align: center;padding: 10px 0;">参数说明</div>
<div v-else style="text-align: center;padding: 10px 0;">结果说明</div>
</template>
</a-table>
</a-form-item>
@@ -98,6 +112,9 @@
{title: '类型', dataIndex: 'type', width: 250},
{title: '说明', dataIndex: 'desc'},
],
responseMediaTypeColumns: [
{title: '媒体类型', dataIndex: 'mediaType'},
],
responseParamListColumns: [
{title: '参数名', dataIndex: 'name', width: 250},
{title: '类型', dataIndex: 'type', width: 250},

View File

@@ -79,7 +79,7 @@
produces: produces,
};
// 解析请求参数
let definitionsDataMap = store.state.openApiDefinitions;
let definitionsDataMap = store.state.openApiComponents;
requestParamList.value = openApiAnalysis.getRequestParamList(docInfo.parameters, definitionsDataMap);
responseParamList.value = openApiAnalysis.getResponseParamList(docInfo.responses, definitionsDataMap);
}