swagger已实现文档的参数和返回值查看
This commit is contained in:
146
zyplayer-doc-ui/swagger-ui/src/assets/utils/SwaggerAnalysisV2.js
Normal file
146
zyplayer-doc-ui/swagger-ui/src/assets/utils/SwaggerAnalysisV2.js
Normal file
@@ -0,0 +1,146 @@
|
||||
import {message} from 'ant-design-vue';
|
||||
// 无需特殊处理的参数类型
|
||||
let notNeedHandleTypeArr = ['file', 'string', 'integer', 'long', 'double', 'object', 'number', 'boolean'];
|
||||
/**
|
||||
* 参数解析
|
||||
* @author 暮光:城中城
|
||||
* @since 2017年5月7日
|
||||
*/
|
||||
export default {
|
||||
getRequestParamList(parameters, definitionsDataMap) {
|
||||
if (!parameters) {
|
||||
return [];
|
||||
}
|
||||
let indexKey = 1;
|
||||
let requestParamList = [];
|
||||
for (let i = 0; i < parameters.length; i++) {
|
||||
let parameter = parameters[i];
|
||||
let type = parameter.type;
|
||||
let subType = undefined;
|
||||
let children = undefined;
|
||||
if (!type) {
|
||||
if (parameter.schema && parameter.schema.type) {
|
||||
type = parameter.schema.type;
|
||||
}
|
||||
}
|
||||
if (type === 'array') {
|
||||
// 解析parameter.items.$ref 或 parameter.items.originalRef {$ref: "#/definitions/Model", originalRef: "Model"}
|
||||
// 解析parameter.items.type {type: 'file'}
|
||||
if (parameter.items && parameter.items.originalRef) {
|
||||
children = this.getParamDefinitions(parameter.items.originalRef, definitionsDataMap, indexKey, {}, 0);
|
||||
} else if (parameter.schema && parameter.schema.items && parameter.schema.items.originalRef) {
|
||||
children = this.getParamDefinitions(parameter.schema.items.originalRef, definitionsDataMap, indexKey, {}, 0);
|
||||
} else if (parameter.items && parameter.items.type) {
|
||||
subType = parameter.items.type;
|
||||
} else {
|
||||
console.log('001-遇到未处理的类型,请联系开发人员修改:' + type, parameter);
|
||||
message.error('001-遇到未处理的类型,请联系开发人员修改:' + type);
|
||||
}
|
||||
} else if (!type) {
|
||||
if (parameter.schema && parameter.schema.originalRef) {
|
||||
// 解析parameter.schema {originalRef: "Model", $ref: "#/definitions/Model"}
|
||||
type = parameter.schema.originalRef;
|
||||
children = this.getParamDefinitions(type, definitionsDataMap, indexKey, {}, 0);
|
||||
} else {
|
||||
console.log('002-遇到未处理的类型,请联系开发人员修改:' + type, parameter);
|
||||
message.error('002-遇到未处理的类型,请联系开发人员修改:' + type);
|
||||
}
|
||||
} else {
|
||||
if (notNeedHandleTypeArr.indexOf(type) >= 0) {
|
||||
// 无需特殊处理的类型
|
||||
} else {
|
||||
console.log('003-遇到未处理的类型,请联系开发人员修改:' + type, parameter);
|
||||
message.error('003-遇到未处理的类型,请联系开发人员修改:' + type);
|
||||
}
|
||||
}
|
||||
requestParamList.push({
|
||||
type: type,
|
||||
key: indexKey,
|
||||
in: parameter.in,
|
||||
name: parameter.name,
|
||||
required: parameter.required ? '是' : '否',
|
||||
description: parameter.description,
|
||||
children: children,
|
||||
});
|
||||
indexKey++;
|
||||
}
|
||||
return requestParamList;
|
||||
},
|
||||
getResponseParamList(responses, definitionsDataMap) {
|
||||
let responsesList = [];
|
||||
let indexKey = 1;
|
||||
Object.keys(responses).forEach(code => {
|
||||
let codeResponses = responses[code];
|
||||
let type = undefined;
|
||||
let children = undefined;
|
||||
if (codeResponses.schema && codeResponses.schema.originalRef) {
|
||||
type = codeResponses.schema.originalRef;
|
||||
children = this.getParamDefinitions(codeResponses.schema.originalRef, definitionsDataMap, indexKey, {}, 0);
|
||||
}
|
||||
responsesList.push({
|
||||
code: code,
|
||||
type: type,
|
||||
key: indexKey,
|
||||
desc: codeResponses.description,
|
||||
schemas: children,
|
||||
});
|
||||
indexKey++;
|
||||
});
|
||||
return responsesList;
|
||||
},
|
||||
getParamDefinitions(ref, definitionsDataMap, indexKey, parentRef, deep) {
|
||||
let definition = definitionsDataMap[ref];
|
||||
// 层级大于5层 或 父节点已经解析过此类型了 或者 没有类型定义
|
||||
if (deep >= 5 || parentRef[ref] || !definition) {
|
||||
return undefined;
|
||||
}
|
||||
parentRef[ref] = 1;
|
||||
let paramList = [];
|
||||
let type = definition.type;
|
||||
let properties = definition.properties;
|
||||
let indexSub = 1;
|
||||
if (type === 'object') {
|
||||
Object.keys(properties).forEach(key => {
|
||||
let parameter = properties[key];
|
||||
let type = parameter.type;
|
||||
let keySub = indexKey + '_' + indexSub;
|
||||
let children = undefined;
|
||||
if (type === 'array') {
|
||||
// 解析parameter.items {originalRef: "Model", $ref: "#/definitions/Model"}
|
||||
if (parameter.items && parameter.items.originalRef) {
|
||||
children = this.getParamDefinitions(parameter.items.originalRef, definitionsDataMap, keySub, parentRef, deep + 1);
|
||||
} else {
|
||||
console.log('004-遇到未处理的类型,请联系开发人员修改:' + type, parameter);
|
||||
message.error('004-遇到未处理的类型,请联系开发人员修改:' + type);
|
||||
}
|
||||
} else if (!type) {
|
||||
if (parameter.originalRef) {
|
||||
type = parameter.originalRef;
|
||||
children = this.getParamDefinitions(parameter.originalRef, definitionsDataMap, keySub, parentRef, deep + 1);
|
||||
} else {
|
||||
console.log('005-遇到未处理的类型,请联系开发人员修改:' + type, parameter);
|
||||
message.error('005-遇到未处理的类型,请联系开发人员修改:' + type);
|
||||
}
|
||||
} else {
|
||||
if (notNeedHandleTypeArr.indexOf(type) >= 0) {
|
||||
// 无需特殊处理的类型
|
||||
} else {
|
||||
console.log('006-遇到未处理的类型,请联系开发人员修改:' + type, parameter);
|
||||
message.error('006-遇到未处理的类型,请联系开发人员修改:' + type);
|
||||
}
|
||||
}
|
||||
paramList.push({
|
||||
type: type,
|
||||
name: key,
|
||||
key: keySub,
|
||||
description: parameter.description,
|
||||
children: children,
|
||||
});
|
||||
indexSub++;
|
||||
});
|
||||
}
|
||||
return paramList.length > 0 ? paramList : undefined;
|
||||
},
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user