fix(接口定义): 修复接口定义导出swagger错误 (#1697)
* feat(测试跟踪): 测试用例下载模版增加标签列 * fix(接口定义): 扩大请求头键长度 * fix: schedule表对旧数据name字段兼容的补充 * fix(接口定义): 修复接口定义导出swagger错误
This commit is contained in:
parent
d1c1957a10
commit
5818505b9c
|
@ -14,9 +14,9 @@ import java.util.List;
|
||||||
public class SwaggerApiExportResult extends ApiExportResult{
|
public class SwaggerApiExportResult extends ApiExportResult{
|
||||||
private String openapi;
|
private String openapi;
|
||||||
private SwaggerInfo info;
|
private SwaggerInfo info;
|
||||||
private String externalDocs;
|
private JSONObject externalDocs;
|
||||||
private List<String> servers;
|
private List<String> servers;
|
||||||
private List<SwaggerTag> tags;
|
private List<SwaggerTag> tags;
|
||||||
private JSONObject paths; // Map<String, Object>, Object 里放 Operation 对象
|
private JSONObject paths; // Map<String, Object>, Object 里放 Operation 对象
|
||||||
private List<String> components;
|
private JSONObject components;
|
||||||
}
|
}
|
||||||
|
|
|
@ -231,6 +231,9 @@ public class Swagger3Parser extends SwaggerAbstractParser {
|
||||||
MediaType mediaType = content.get(contentType);
|
MediaType mediaType = content.get(contentType);
|
||||||
if (mediaType == null) {
|
if (mediaType == null) {
|
||||||
Set<String> contentTypes = content.keySet();
|
Set<String> contentTypes = content.keySet();
|
||||||
|
if(contentTypes.size() == 0) { // 防止空指针
|
||||||
|
return;
|
||||||
|
}
|
||||||
contentType = contentTypes.iterator().next();
|
contentType = contentTypes.iterator().next();
|
||||||
if (StringUtils.isBlank(contentType)) {
|
if (StringUtils.isBlank(contentType)) {
|
||||||
return;
|
return;
|
||||||
|
@ -410,26 +413,34 @@ public class Swagger3Parser extends SwaggerAbstractParser {
|
||||||
result.setInfo(new SwaggerInfo());
|
result.setInfo(new SwaggerInfo());
|
||||||
result.setServers(new ArrayList<>());
|
result.setServers(new ArrayList<>());
|
||||||
result.setTags(new ArrayList<>());
|
result.setTags(new ArrayList<>());
|
||||||
result.setComponents(new ArrayList<>());
|
result.setComponents(new JSONObject());
|
||||||
|
result.setExternalDocs(new JSONObject());
|
||||||
|
|
||||||
JSONObject paths = new JSONObject();
|
JSONObject paths = new JSONObject();
|
||||||
JSONObject swaggerPath = new JSONObject();
|
|
||||||
for(ApiDefinitionWithBLOBs apiDefinition : apiDefinitionList) {
|
for(ApiDefinitionWithBLOBs apiDefinition : apiDefinitionList) {
|
||||||
SwaggerApiInfo swaggerApiInfo = new SwaggerApiInfo(); // {tags:, summary:, description:, parameters:}
|
SwaggerApiInfo swaggerApiInfo = new SwaggerApiInfo(); // {tags:, summary:, description:, parameters:}
|
||||||
swaggerApiInfo.setSummary(apiDefinition.getName());
|
swaggerApiInfo.setSummary(apiDefinition.getName());
|
||||||
// 设置导入后的模块名 (根据 api 的 moduleID 查库获得所属模块,作为导出的模块名)
|
// 设置导入后的模块名 (根据 api 的 moduleID 查库获得所属模块,作为导出的模块名)
|
||||||
ApiModuleService apiModuleService = CommonBeanFactory.getBean(ApiModuleService.class);
|
ApiModuleService apiModuleService = CommonBeanFactory.getBean(ApiModuleService.class);
|
||||||
String moduleName = apiModuleService.getNode(apiDefinition.getModuleId()).getName();
|
String moduleName = "";
|
||||||
|
if(apiDefinition.getModuleId() != null) { // module_id 可能为空
|
||||||
|
moduleName = apiModuleService.getNode(apiDefinition.getModuleId()).getName();
|
||||||
|
}
|
||||||
swaggerApiInfo.setTags(Arrays.asList(moduleName));
|
swaggerApiInfo.setTags(Arrays.asList(moduleName));
|
||||||
// 设置请求体
|
// 设置请求体
|
||||||
JSONObject requestObject = JSON.parseObject(apiDefinition.getRequest()); // 将api的request属性转换成JSON对象以便获得参数
|
JSONObject requestObject = JSON.parseObject(apiDefinition.getRequest()); // 将api的request属性转换成JSON对象以便获得参数
|
||||||
JSONObject requestBody = buildRequestBody(requestObject);
|
JSONObject requestBody = buildRequestBody(requestObject);
|
||||||
swaggerApiInfo.setRequestBody(requestBody);
|
swaggerApiInfo.setRequestBody(requestBody);
|
||||||
|
// 设置响应体
|
||||||
|
swaggerApiInfo.setResponses(new JSONObject());
|
||||||
// 设置请求参数列表
|
// 设置请求参数列表
|
||||||
List<JSONObject> paramsList = buildParameters(requestObject);
|
List<JSONObject> paramsList = buildParameters(requestObject);
|
||||||
swaggerApiInfo.setParameters(paramsList);
|
swaggerApiInfo.setParameters(paramsList);
|
||||||
swaggerPath.put(apiDefinition.getMethod().toLowerCase(), JSON.parseObject(JSON.toJSONString(swaggerApiInfo))); // 设置api的请求类型和api定义、参数
|
JSONObject methodDetail = JSON.parseObject(JSON.toJSONString(swaggerApiInfo));
|
||||||
paths.put(apiDefinition.getPath(), swaggerPath);
|
if(paths.getJSONObject(apiDefinition.getPath()) == null) {
|
||||||
|
paths.put(apiDefinition.getPath(), new JSONObject());
|
||||||
|
} // 一个路径下有多个发方法,如post,get,因此是一个 JSONObject 类型
|
||||||
|
paths.getJSONObject(apiDefinition.getPath()).put(apiDefinition.getMethod().toLowerCase(), methodDetail);
|
||||||
}
|
}
|
||||||
result.setPaths(paths);
|
result.setPaths(paths);
|
||||||
return result;
|
return result;
|
||||||
|
@ -477,7 +488,9 @@ public class Swagger3Parser extends SwaggerAbstractParser {
|
||||||
schema.put("format", null);
|
schema.put("format", null);
|
||||||
typeName.put("schema", schema);
|
typeName.put("schema", schema);
|
||||||
JSONObject content = new JSONObject();
|
JSONObject content = new JSONObject();
|
||||||
content.put(typeMap.get(type), typeName);
|
if (type != null && StringUtils.isNotBlank(type)) {
|
||||||
|
content.put(typeMap.get(type), typeName);
|
||||||
|
}
|
||||||
requestBody.put("content", content);
|
requestBody.put("content", content);
|
||||||
return requestBody;
|
return requestBody;
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,4 +14,5 @@ public class SwaggerApiInfo {
|
||||||
private String summary; // 对应 API 的名字
|
private String summary; // 对应 API 的名字
|
||||||
private List<JSONObject> parameters; // 对应 API 的请求参数
|
private List<JSONObject> parameters; // 对应 API 的请求参数
|
||||||
private JSONObject requestBody;
|
private JSONObject requestBody;
|
||||||
|
private JSONObject responses;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue