#I4GCYB 文档解析增加$ref类型

This commit is contained in:
暮光:城中城
2021-11-01 22:45:27 +08:00
parent d3ed4e8334
commit 95f0e26f82

View File

@@ -25,11 +25,13 @@ export default {
if (type === 'array') { if (type === 'array') {
// 解析parameter.items.$ref 或 parameter.items.originalRef {$ref: "#/definitions/Model", originalRef: "Model"} // 解析parameter.items.$ref 或 parameter.items.originalRef {$ref: "#/definitions/Model", originalRef: "Model"}
// 解析parameter.items.type {type: 'file'} // 解析parameter.items.type {type: 'file'}
if (parameter.items && parameter.items.originalRef) { if (this.isSchemaRef(parameter.items)) {
children = this.getParamDefinitions(parameter.items.originalRef, definitionsDataMap, indexKey, {}, 0); subType = this.getSchemaRef(parameter.schema);
children = this.getParamDefinitions(subType, definitionsDataMap, indexKey, {}, 0);
} else if (parameter.schema) { } else if (parameter.schema) {
if (parameter.schema.items && parameter.schema.items.originalRef) { if (this.isSchemaRef(parameter.schema.items)) {
children = this.getParamDefinitions(parameter.schema.items.originalRef, definitionsDataMap, indexKey, {}, 0); subType = this.getSchemaRef(parameter.schema.items);
children = this.getParamDefinitions(subType, definitionsDataMap, indexKey, {}, 0);
} else if (parameter.schema.type) { } else if (parameter.schema.type) {
subType = parameter.schema.type; subType = parameter.schema.type;
} }
@@ -40,9 +42,9 @@ export default {
} }
} else if (!type) { } else if (!type) {
if (parameter.schema) { if (parameter.schema) {
if (parameter.schema.originalRef) { if (this.isSchemaRef(parameter.schema)) {
// 解析parameter.schema {originalRef: "Model", $ref: "#/definitions/Model"} // 解析parameter.schema {originalRef: "Model", $ref: "#/definitions/Model"}
type = parameter.schema.originalRef; type = this.getSchemaRef(parameter.schema);
children = this.getParamDefinitions(type, definitionsDataMap, indexKey, {}, 0); children = this.getParamDefinitions(type, definitionsDataMap, indexKey, {}, 0);
} else if (parameter.schema.type) { } else if (parameter.schema.type) {
type = parameter.schema.type; type = parameter.schema.type;
@@ -51,8 +53,9 @@ export default {
children = this.getAdditionalProperties(parameter.schema.additionalProperties, additional, definitionsDataMap, indexKey, {}, 0); children = this.getAdditionalProperties(parameter.schema.additionalProperties, additional, definitionsDataMap, indexKey, {}, 0);
format = additional.type; format = additional.type;
} else if (parameter.schema.items) { } else if (parameter.schema.items) {
if (parameter.schema.items.originalRef) { if (this.isSchemaRef(parameter.schema.items)) {
children = this.getParamDefinitions(parameter.schema.items.originalRef, definitionsDataMap, indexKey, {}, 0); subType = this.getSchemaRef(parameter.schema.items);
children = this.getParamDefinitions(subType, definitionsDataMap, indexKey, {}, 0);
} else if (parameter.schema.items.type) { } else if (parameter.schema.items.type) {
subType = parameter.schema.items.type; subType = parameter.schema.items.type;
} else { } else {
@@ -118,9 +121,9 @@ export default {
let codeResponses = responses[code]; let codeResponses = responses[code];
let type = undefined; let type = undefined;
let children = undefined; let children = undefined;
if (codeResponses.schema && codeResponses.schema.originalRef) { if (this.isSchemaRef(codeResponses.schema)) {
type = codeResponses.schema.originalRef; type = this.getSchemaRef(codeResponses.schema);
children = this.getParamDefinitions(codeResponses.schema.originalRef, definitionsDataMap, indexKey, {}, 0); children = this.getParamDefinitions(type, definitionsDataMap, indexKey, {}, 0);
} }
responsesList.push({ responsesList.push({
code: code, code: code,
@@ -133,6 +136,15 @@ export default {
}); });
return responsesList; return responsesList;
}, },
isSchemaRef(schema) {
return !!(schema && (schema.originalRef || schema['$ref']));
},
getSchemaRef(schema) {
if (schema.originalRef) return schema.originalRef;
if (schema['$ref'] && schema['$ref'].indexOf('#/definitions/') === 0) return schema['$ref'].replace('#/definitions/', '');
this.logMessage('9467', '', schema);
return '';
},
getParamDefinitions(ref, definitionsDataMap, indexKey, parentRef, deep) { getParamDefinitions(ref, definitionsDataMap, indexKey, parentRef, deep) {
let definition = definitionsDataMap[ref]; let definition = definitionsDataMap[ref];
// 层级大于5层 或者 没有类型定义 // 层级大于5层 或者 没有类型定义
@@ -167,9 +179,9 @@ export default {
}); });
if (type === 'array') { if (type === 'array') {
// 解析parameter.items {originalRef: "Model", $ref: "#/definitions/Model"} // 解析parameter.items {originalRef: "Model", $ref: "#/definitions/Model"}
if (parameter.items && parameter.items.originalRef) { if (this.isSchemaRef(parameter.items)) {
subType = parameter.items.originalRef; subType = this.getSchemaRef(parameter.items);
children = this.getParamDefinitions(parameter.items.originalRef, definitionsDataMap, keySub, parentRef, deep + 1); children = this.getParamDefinitions(subType, definitionsDataMap, keySub, parentRef, deep + 1);
} else if (parameter.items && parameter.items.type) { } else if (parameter.items && parameter.items.type) {
subType = parameter.items.type; subType = parameter.items.type;
} else { } else {
@@ -184,9 +196,9 @@ export default {
this.log('0041', type, parameter); this.log('0041', type, parameter);
} }
} else if (!type) { } else if (!type) {
if (parameter.originalRef) { if (this.isSchemaRef(parameter)) {
type = parameter.originalRef; type = this.getSchemaRef(parameter);
children = this.getParamDefinitions(parameter.originalRef, definitionsDataMap, keySub, parentRef, deep + 1); children = this.getParamDefinitions(type, definitionsDataMap, keySub, parentRef, deep + 1);
} else { } else {
this.logMessage('005', type, parameter); this.logMessage('005', type, parameter);
} }
@@ -225,9 +237,9 @@ export default {
return paramList.length > 0 ? paramList : undefined; return paramList.length > 0 ? paramList : undefined;
}, },
getAdditionalProperties(additionalProperties, additional, definitionsDataMap, keySub, parentRef, deep) { getAdditionalProperties(additionalProperties, additional, definitionsDataMap, keySub, parentRef, deep) {
if (additionalProperties.originalRef) { if (this.isSchemaRef(additionalProperties)) {
additional.type = additionalProperties.originalRef; additional.type = this.getSchemaRef(additionalProperties);
additional.children = this.getParamDefinitions(additionalProperties.originalRef, definitionsDataMap, keySub, parentRef, deep + 1); additional.children = this.getParamDefinitions(additional.type, definitionsDataMap, keySub, parentRef, deep + 1);
return additional.additional; return additional.additional;
} else if (additionalProperties.additionalProperties) { } else if (additionalProperties.additionalProperties) {
additional.type = additionalProperties.type; additional.type = additionalProperties.type;
@@ -235,10 +247,11 @@ export default {
return this.getAdditionalProperties(additionalProperties.additionalProperties, additional.additional, definitionsDataMap, keySub, parentRef, deep + 1); return this.getAdditionalProperties(additionalProperties.additionalProperties, additional.additional, definitionsDataMap, keySub, parentRef, deep + 1);
} else if (additionalProperties.type === 'array') { } else if (additionalProperties.type === 'array') {
additional.type = additionalProperties.type; additional.type = additionalProperties.type;
if (additionalProperties.items && additionalProperties.items.originalRef) { if (this.isSchemaRef(additionalProperties.items)) {
let children = this.getParamDefinitions(additionalProperties.items.originalRef, definitionsDataMap, keySub, parentRef, deep + 1); let subType = this.getSchemaRef(additionalProperties.items);
let children = this.getParamDefinitions(subType, definitionsDataMap, keySub, parentRef, deep + 1);
additional.additional = { additional.additional = {
type: additionalProperties.items.originalRef, type: subType,
children: children children: children
}; };
return children; return children;