#I4GCYB 文档解析增加$ref类型
This commit is contained in:
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user