完善接口文档模板与逻辑
This commit is contained in:
parent
ea58e18596
commit
f020356a81
@ -1,6 +1,8 @@
|
||||
package com.cm.common.service.impl;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.cm.common.base.AbstractService;
|
||||
import com.cm.common.config.properties.SystemProperties;
|
||||
import com.cm.common.constants.ISystemConstant;
|
||||
import com.cm.common.service.IApiDocService;
|
||||
import com.cm.common.utils.DateUtil;
|
||||
@ -53,6 +55,8 @@ public class ApiDocServiceImpl extends AbstractService implements IApiDocService
|
||||
private ServiceModelToSwagger2Mapper serviceModelToSwagger2Mapper;
|
||||
@Autowired
|
||||
private FreeMarkerConfigurer freeMarkerConfigurer;
|
||||
@Autowired
|
||||
private SystemProperties systemProperties;
|
||||
|
||||
@PostConstruct
|
||||
public void init() {
|
||||
@ -84,9 +88,9 @@ public class ApiDocServiceImpl extends AbstractService implements IApiDocService
|
||||
apiGroups.add(systemDocMap);
|
||||
}
|
||||
}
|
||||
|
||||
apiDocMap.put("title", systemProperties.getTitle());
|
||||
apiDocMap.put("apiGroups", apiGroups);
|
||||
apiDocMap.put("author", "System");
|
||||
apiDocMap.put("author", "XXXXXX");
|
||||
apiDocMap.put("date", DateUtil.getDay());
|
||||
apiDocMap.put("version", "v1.0");
|
||||
return apiDocMap;
|
||||
@ -124,15 +128,22 @@ public class ApiDocServiceImpl extends AbstractService implements IApiDocService
|
||||
apiMap.put("definitions", definitions);
|
||||
for (Tag tag : tags) {
|
||||
Map<String, Object> apiController = new HashMap<>();
|
||||
apiController.put("name", tag.getName());
|
||||
apiController.put("name", tag.getName().indexOf("\\-") > 0 ? tag.getName().split("\\-")[1] : tag.getName());
|
||||
apiController.put("description", tag.getDescription());
|
||||
apiController.put("apis", listApiMap(tag.getName(), paths));
|
||||
apiController.put("apis", listApiMap(tag.getName(), paths, definitions));
|
||||
apiControllers.add(apiController);
|
||||
}
|
||||
return apiMap;
|
||||
}
|
||||
|
||||
private List<Map<String, Object>> listApiMap(String apiController, Map<String, Path> paths) {
|
||||
/**
|
||||
* api列表
|
||||
*
|
||||
* @param apiController
|
||||
* @param paths
|
||||
* @return
|
||||
*/
|
||||
private List<Map<String, Object>> listApiMap(String apiController, Map<String, Path> paths, Map<String, Model> definitions) {
|
||||
List<Map<String, Object>> pathMaps = new ArrayList<>();
|
||||
for (Map.Entry<String, Path> kv : paths.entrySet()) {
|
||||
String apiUrl = kv.getKey();
|
||||
@ -150,8 +161,20 @@ public class ApiDocServiceImpl extends AbstractService implements IApiDocService
|
||||
methodOperationMap.put("description", operation.getDescription() == null ? "无" : operation.getDescription());
|
||||
methodOperationMap.put("consumes", operation.getConsumes());
|
||||
methodOperationMap.put("produces", operation.getProduces());
|
||||
methodOperationMap.put("parameters", listRequestParameter(operation));
|
||||
methodOperationMap.put("responses", listResponseMap(operation));
|
||||
// 请求参数
|
||||
List<Map<String, Object>> parameters = listRequestParameter(operation);
|
||||
methodOperationMap.put("parameters", parameters);
|
||||
methodOperationMap.put("parameterRefs", listRef(parameters, definitions));
|
||||
// 请求示例
|
||||
List<Map<String, Object>> parameterExamples = listExample(parameters, definitions);
|
||||
methodOperationMap.put("parameterExamples", parameterExamples);
|
||||
// 响应参数
|
||||
List<Map<String, Object>> responses = listResponseMap(operation);
|
||||
methodOperationMap.put("responses", responses);
|
||||
methodOperationMap.put("responseRefs", listRef(responses, definitions));
|
||||
// 响应示例
|
||||
List<Map<String, Object>> responseExamples = listExample(responses, definitions);
|
||||
methodOperationMap.put("responseExamples", responseExamples);
|
||||
pathMaps.add(methodOperationMap);
|
||||
}
|
||||
}
|
||||
@ -159,6 +182,12 @@ public class ApiDocServiceImpl extends AbstractService implements IApiDocService
|
||||
return pathMaps;
|
||||
}
|
||||
|
||||
/**
|
||||
* 请求参数
|
||||
*
|
||||
* @param operation
|
||||
* @return
|
||||
*/
|
||||
private List<Map<String, Object>> listRequestParameter(Operation operation) {
|
||||
List<Map<String, Object>> requestParameterList = new ArrayList<>();
|
||||
List<Parameter> parameters = operation.getParameters();
|
||||
@ -175,23 +204,31 @@ public class ApiDocServiceImpl extends AbstractService implements IApiDocService
|
||||
requestParameter.put("type", type);
|
||||
requestParameter.put("source", parameter);
|
||||
requestParameter.put("access", parameter.getAccess());
|
||||
String ref = "无";
|
||||
String simpleRef = "无";
|
||||
if (parameter instanceof BodyParameter) {
|
||||
BodyParameter bodyParameter = (BodyParameter) parameter;
|
||||
Model schema = bodyParameter.getSchema();
|
||||
requestParameter.put("schemaClass", schema.getClass());
|
||||
if (schema instanceof RefModel) {
|
||||
RefModel refModel = (RefModel) schema;
|
||||
requestParameter.put("ref", refModel.get$ref());
|
||||
requestParameter.put("simpleRef", refModel.getSimpleRef());
|
||||
ref = refModel.get$ref();
|
||||
simpleRef = refModel.getSimpleRef();
|
||||
}
|
||||
}
|
||||
requestParameter.put("ref", ref);
|
||||
requestParameter.put("simpleRef", simpleRef);
|
||||
requestParameterList.add(requestParameter);
|
||||
|
||||
|
||||
}
|
||||
return requestParameterList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 响应结果
|
||||
*
|
||||
* @param operation
|
||||
* @return
|
||||
*/
|
||||
private List<Map<String, Object>> listResponseMap(Operation operation) {
|
||||
Map<String, Response> responses = operation.getResponses();
|
||||
List<Map<String, Object>> responseMaps = new ArrayList<>();
|
||||
@ -202,26 +239,187 @@ public class ApiDocServiceImpl extends AbstractService implements IApiDocService
|
||||
responseMap.put("code", code);
|
||||
responseMap.put("description", response.getDescription());
|
||||
Property schema = response.getSchema();
|
||||
String ref = "无";
|
||||
String simpleRef = "无";
|
||||
String type = "无";
|
||||
if (schema != null) {
|
||||
responseMap.put("schemaClass", schema.getClass());
|
||||
responseMap.put("type", schema.getType());
|
||||
type = schema.getType();
|
||||
if (schema instanceof ArrayProperty) {
|
||||
ArrayProperty arrayProperty = (ArrayProperty) schema;
|
||||
Property items = arrayProperty.getItems();
|
||||
if (items instanceof RefProperty) {
|
||||
RefProperty refProperty = (RefProperty) items;
|
||||
responseMap.put("ref", refProperty.get$ref());
|
||||
responseMap.put("simpleRef", refProperty.getSimpleRef());
|
||||
ref = refProperty.get$ref();
|
||||
simpleRef = refProperty.getSimpleRef();
|
||||
}
|
||||
} else if (schema instanceof RefProperty) {
|
||||
RefProperty refProperty = (RefProperty) schema;
|
||||
responseMap.put("ref", refProperty.get$ref());
|
||||
responseMap.put("simpleRef", refProperty.getSimpleRef());
|
||||
ref = refProperty.get$ref();
|
||||
simpleRef = refProperty.getSimpleRef();
|
||||
}
|
||||
}
|
||||
responseMap.put("ref", ref);
|
||||
responseMap.put("simpleRef", simpleRef);
|
||||
responseMap.put("type", StringUtils.equals(type, "ref") ? "object" : type);
|
||||
responseMaps.add(responseMap);
|
||||
}
|
||||
return responseMaps;
|
||||
}
|
||||
|
||||
/**
|
||||
* 引用对象列表
|
||||
*
|
||||
* @param listParameter
|
||||
* @param definitions
|
||||
* @return
|
||||
*/
|
||||
private List<Map<String, Object>> listRef(List<Map<String, Object>> listParameter, Map<String, Model> definitions) {
|
||||
List<Map<String, Object>> refs = new ArrayList<>();
|
||||
for (Map<String, Object> parameter : listParameter) {
|
||||
if (StringUtils.equals(parameter.get("ref").toString(), "无")) {
|
||||
continue;
|
||||
}
|
||||
String simpleRef = parameter.get("simpleRef").toString();
|
||||
setRef(refs, simpleRef, definitions);
|
||||
}
|
||||
return refs;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置引用
|
||||
*
|
||||
* @param refs
|
||||
* @param simpleRef
|
||||
* @param definitions
|
||||
*/
|
||||
private void setRef(List<Map<String, Object>> refs, String simpleRef, Map<String, Model> definitions) {
|
||||
for (Map.Entry<String, Model> definitionKV : definitions.entrySet()) {
|
||||
if (StringUtils.equals(definitionKV.getKey(), simpleRef)) {
|
||||
Model model = definitionKV.getValue();
|
||||
if (model instanceof ModelImpl) {
|
||||
ModelImpl modelImpl = (ModelImpl) model;
|
||||
Map<String, Property> modelProperties = model.getProperties();
|
||||
if (modelProperties == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
Map<String, Object> requestParameterRef = new HashMap<>();
|
||||
// 这里提前添加为了保证递归时的顺序
|
||||
refs.add(requestParameterRef);
|
||||
requestParameterRef.put("class", model.getClass());
|
||||
requestParameterRef.put("name", definitionKV.getKey());
|
||||
requestParameterRef.put("type", modelImpl.getType());
|
||||
requestParameterRef.put("modelProperties", modelProperties);
|
||||
List<Map<String, Object>> modelPropertiesList = new ArrayList<>();
|
||||
// 这里提前添加为了保证递归时的顺序
|
||||
requestParameterRef.put("modelPropertiesList", modelPropertiesList);
|
||||
for (Map.Entry<String, Property> modelPropertiesKV : modelProperties.entrySet()) {
|
||||
Property modelPropertiesValue = modelPropertiesKV.getValue();
|
||||
Map<String, Object> modelPropertiesMap = new HashMap<>();
|
||||
modelPropertiesMap.put("name", modelPropertiesKV.getKey());
|
||||
modelPropertiesMap.put("description", StringUtils.isBlank(modelPropertiesValue.getDescription()) ? "无" : modelPropertiesValue.getDescription());
|
||||
modelPropertiesMap.put("type", modelPropertiesValue.getType());
|
||||
modelPropertiesMap.put("example", modelPropertiesValue.getExample() == null ? "无" : modelPropertiesValue);
|
||||
modelPropertiesMap.put("class", modelPropertiesValue.getClass());
|
||||
modelPropertiesList.add(modelPropertiesMap);
|
||||
// 递归完成引用类的构建
|
||||
RefProperty subRefProperty = getRefProperty(modelPropertiesValue);
|
||||
String subSimpleRef = "无";
|
||||
if (subRefProperty != null) {
|
||||
subSimpleRef = subRefProperty.getSimpleRef();
|
||||
// 相同引用不递归处理
|
||||
if (!StringUtils.equals(simpleRef, subSimpleRef)) {
|
||||
setRef(refs, subSimpleRef, definitions);
|
||||
}
|
||||
}
|
||||
modelPropertiesMap.put("simpleRef", subSimpleRef);
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取对象示例
|
||||
*
|
||||
* @param listParameter
|
||||
* @param definitions
|
||||
* @return
|
||||
*/
|
||||
private List<Map<String, Object>> listExample(List<Map<String, Object>> listParameter, Map<String, Model> definitions) {
|
||||
List<Map<String, Object>> exampleList = new ArrayList<>();
|
||||
for (Map<String, Object> parameter : listParameter) {
|
||||
if (StringUtils.equals(parameter.get("ref").toString(), "无")) {
|
||||
continue;
|
||||
}
|
||||
String simpleRef = parameter.get("simpleRef").toString();
|
||||
Map<String, Object> exampleMap = new HashMap<>();
|
||||
exampleMap.put("simpleRef", simpleRef);
|
||||
// 得到对象示例
|
||||
Map<String, Object> example = new HashMap<>();
|
||||
setExample(example, simpleRef, definitions);
|
||||
// 带格式的JSON输出
|
||||
exampleMap.put("example", JSONObject.toJSONString(example));
|
||||
exampleList.add(exampleMap);
|
||||
}
|
||||
return exampleList;
|
||||
}
|
||||
|
||||
private void setExample(Map<String, Object> exampleMap, String simpleRef, Map<String, Model> definitions) {
|
||||
for (Map.Entry<String, Model> definitionKV : definitions.entrySet()) {
|
||||
if (StringUtils.equals(definitionKV.getKey(), simpleRef)) {
|
||||
Model model = definitionKV.getValue();
|
||||
if (model instanceof ModelImpl) {
|
||||
Map<String, Property> modelProperties = model.getProperties();
|
||||
if (modelProperties == null) {
|
||||
return;
|
||||
}
|
||||
for (Map.Entry<String, Property> modelPropertiesKV : modelProperties.entrySet()) {
|
||||
Property modelPropertiesValue = modelPropertiesKV.getValue();
|
||||
exampleMap.put(modelPropertiesKV.getKey(), "");
|
||||
// 递归完成引用类的构建
|
||||
RefProperty subRefProperty = getRefProperty(modelPropertiesValue);
|
||||
if (subRefProperty != null) {
|
||||
String subSimpleRef = subRefProperty.getSimpleRef();
|
||||
// 相同引用不递归处理
|
||||
if (!StringUtils.equals(simpleRef, subSimpleRef)) {
|
||||
Map<String, Object> subExampleMap = new HashMap<>();
|
||||
if (StringUtils.equals(modelPropertiesValue.getType(), "array")) {
|
||||
List<Map<String, Object>> subExampleList = new ArrayList<>();
|
||||
subExampleList.add(subExampleMap);
|
||||
exampleMap.put(modelPropertiesKV.getKey(), subExampleList);
|
||||
} else {
|
||||
exampleMap.put(modelPropertiesKV.getKey(), subExampleMap);
|
||||
}
|
||||
setExample(subExampleMap, subSimpleRef, definitions);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取引用属性
|
||||
*
|
||||
* @param modelPropertiesValue
|
||||
* @return
|
||||
*/
|
||||
private RefProperty getRefProperty(Property modelPropertiesValue) {
|
||||
RefProperty subRefProperty = null;
|
||||
if (modelPropertiesValue instanceof ArrayProperty) {
|
||||
ArrayProperty arrayProperty = (ArrayProperty) modelPropertiesValue;
|
||||
Property items = arrayProperty.getItems();
|
||||
if (items instanceof RefProperty) {
|
||||
subRefProperty = (RefProperty) items;
|
||||
}
|
||||
} else if (modelPropertiesValue instanceof RefProperty) {
|
||||
subRefProperty = (RefProperty) modelPropertiesValue;
|
||||
}
|
||||
return subRefProperty;
|
||||
}
|
||||
}
|
||||
|
@ -94,17 +94,7 @@
|
||||
<w:sz w:val="52"/>
|
||||
<w:szCs w:val="52"/>
|
||||
</w:rPr>
|
||||
<w:t>X</w:t>
|
||||
</w:r>
|
||||
<w:r w:rsidRPr="00915FA1">
|
||||
<w:rPr>
|
||||
<w:rFonts w:ascii="黑体" w:eastAsia="黑体" w:hAnsi="黑体"/>
|
||||
<w:b/>
|
||||
<w:bCs/>
|
||||
<w:sz w:val="52"/>
|
||||
<w:szCs w:val="52"/>
|
||||
</w:rPr>
|
||||
<w:t>XXX</w:t>
|
||||
<w:t>${title}</w:t>
|
||||
</w:r>
|
||||
</w:p>
|
||||
<w:p w14:paraId="4805950A" w14:textId="76E63FED" w:rsidR="00794B53" w:rsidRPr="00915FA1" w:rsidRDefault="00794B53" w:rsidP="00535033">
|
||||
@ -385,7 +375,7 @@
|
||||
<w:sz w:val="24"/>
|
||||
<w:szCs w:val="24"/>
|
||||
</w:rPr>
|
||||
<w:t>功能说明</w:t>
|
||||
<w:t>${api.summary}</w:t>
|
||||
</w:r>
|
||||
</w:p>
|
||||
<w:p w14:paraId="4B7CF361" w14:textId="67474B4F" w:rsidR="009F47E9" w:rsidRPr="003374F2" w:rsidRDefault="001A2E56" w:rsidP="001A2E56">
|
||||
@ -409,7 +399,7 @@
|
||||
<w:sz w:val="24"/>
|
||||
<w:szCs w:val="24"/>
|
||||
</w:rPr>
|
||||
<w:t>描述:${api.summary}</w:t>
|
||||
<w:t>功能描述</w:t>
|
||||
</w:r>
|
||||
</w:p>
|
||||
<w:p w14:paraId="3520F921" w14:textId="06032F8E" w:rsidR="00FE5FDB" w:rsidRPr="003374F2" w:rsidRDefault="00C80924" w:rsidP="00FE5FDB">
|
||||
@ -748,6 +738,7 @@
|
||||
</w:tr>
|
||||
</#list>
|
||||
</w:tbl>
|
||||
<#list api.parameterRefs as parameterRef>
|
||||
<w:p w14:paraId="0E6E47B4" w14:textId="48701217" w:rsidR="00017A4F" w:rsidRPr="0019798A" w:rsidRDefault="00C80924" w:rsidP="0019798A">
|
||||
<w:pPr>
|
||||
<w:jc w:val="left"/>
|
||||
@ -756,26 +747,12 @@
|
||||
<w:szCs w:val="21"/>
|
||||
</w:rPr>
|
||||
</w:pPr>
|
||||
<w:r w:rsidRPr="0019798A">
|
||||
<w:rPr>
|
||||
<w:rFonts w:ascii="黑体" w:eastAsia="黑体" w:hAnsi="黑体" w:hint="eastAsia"/>
|
||||
<w:szCs w:val="21"/>
|
||||
</w:rPr>
|
||||
<w:t>X</w:t>
|
||||
</w:r>
|
||||
<w:r w:rsidRPr="0019798A">
|
||||
<w:rPr>
|
||||
<w:rFonts w:ascii="黑体" w:eastAsia="黑体" w:hAnsi="黑体"/>
|
||||
<w:szCs w:val="21"/>
|
||||
</w:rPr>
|
||||
<w:t>XX</w:t>
|
||||
</w:r>
|
||||
<w:r w:rsidRPr="0019798A">
|
||||
<w:rPr>
|
||||
<w:rFonts w:ascii="黑体" w:eastAsia="黑体" w:hAnsi="黑体" w:hint="eastAsia"/>
|
||||
<w:szCs w:val="21"/>
|
||||
</w:rPr>
|
||||
<w:t>对象属性</w:t>
|
||||
<w:t>${parameterRef.name}对象属性</w:t>
|
||||
</w:r>
|
||||
</w:p>
|
||||
<w:tbl>
|
||||
@ -819,7 +796,7 @@
|
||||
<w:sz w:val="18"/>
|
||||
<w:szCs w:val="18"/>
|
||||
</w:rPr>
|
||||
<w:t>名称</w:t>
|
||||
<w:t>属性名</w:t>
|
||||
</w:r>
|
||||
</w:p>
|
||||
</w:tc>
|
||||
@ -906,11 +883,12 @@
|
||||
<w:sz w:val="18"/>
|
||||
<w:szCs w:val="18"/>
|
||||
</w:rPr>
|
||||
<w:t>示例</w:t>
|
||||
<w:t>构造对象</w:t>
|
||||
</w:r>
|
||||
</w:p>
|
||||
</w:tc>
|
||||
</w:tr>
|
||||
<#list parameterRef.modelPropertiesList as modelProperties>
|
||||
<w:tr w:rsidR="00C80924" w:rsidRPr="00C80924" w14:paraId="5EBAE2B1" w14:textId="656F88DE" w:rsidTr="008F69DD">
|
||||
<w:trPr>
|
||||
<w:cnfStyle w:val="000000100000" w:firstRow="0" w:lastRow="0" w:firstColumn="0" w:lastColumn="0" w:oddVBand="0" w:evenVBand="0" w:oddHBand="1" w:evenHBand="0" w:firstRowFirstColumn="0" w:firstRowLastColumn="0" w:lastRowFirstColumn="0" w:lastRowLastColumn="0"/>
|
||||
@ -930,6 +908,14 @@
|
||||
<w:szCs w:val="18"/>
|
||||
</w:rPr>
|
||||
</w:pPr>
|
||||
<w:r w:rsidRPr="00C80924">
|
||||
<w:rPr>
|
||||
<w:rFonts w:ascii="黑体" w:eastAsia="黑体" w:hAnsi="黑体" w:hint="eastAsia"/>
|
||||
<w:sz w:val="18"/>
|
||||
<w:szCs w:val="18"/>
|
||||
</w:rPr>
|
||||
<w:t>${modelProperties.name}</w:t>
|
||||
</w:r>
|
||||
</w:p>
|
||||
</w:tc>
|
||||
<w:tc>
|
||||
@ -947,6 +933,14 @@
|
||||
<w:szCs w:val="18"/>
|
||||
</w:rPr>
|
||||
</w:pPr>
|
||||
<w:r w:rsidRPr="00C80924">
|
||||
<w:rPr>
|
||||
<w:rFonts w:ascii="黑体" w:eastAsia="黑体" w:hAnsi="黑体" w:hint="eastAsia"/>
|
||||
<w:sz w:val="18"/>
|
||||
<w:szCs w:val="18"/>
|
||||
</w:rPr>
|
||||
<w:t>${modelProperties.description}</w:t>
|
||||
</w:r>
|
||||
</w:p>
|
||||
</w:tc>
|
||||
<w:tc>
|
||||
@ -964,6 +958,14 @@
|
||||
<w:szCs w:val="18"/>
|
||||
</w:rPr>
|
||||
</w:pPr>
|
||||
<w:r w:rsidRPr="00C80924">
|
||||
<w:rPr>
|
||||
<w:rFonts w:ascii="黑体" w:eastAsia="黑体" w:hAnsi="黑体" w:hint="eastAsia"/>
|
||||
<w:sz w:val="18"/>
|
||||
<w:szCs w:val="18"/>
|
||||
</w:rPr>
|
||||
<w:t>${modelProperties.type}</w:t>
|
||||
</w:r>
|
||||
</w:p>
|
||||
</w:tc>
|
||||
<w:tc>
|
||||
@ -981,10 +983,21 @@
|
||||
<w:szCs w:val="18"/>
|
||||
</w:rPr>
|
||||
</w:pPr>
|
||||
<w:r w:rsidRPr="00C80924">
|
||||
<w:rPr>
|
||||
<w:rFonts w:ascii="黑体" w:eastAsia="黑体" w:hAnsi="黑体" w:hint="eastAsia"/>
|
||||
<w:sz w:val="18"/>
|
||||
<w:szCs w:val="18"/>
|
||||
</w:rPr>
|
||||
<w:t>${modelProperties.simpleRef}</w:t>
|
||||
</w:r>
|
||||
</w:p>
|
||||
</w:tc>
|
||||
</w:tr>
|
||||
</#list>
|
||||
</w:tbl>
|
||||
</#list>
|
||||
<#list api.parameterExamples as parameterExample>
|
||||
<w:p w14:paraId="19A1F3EB" w14:textId="3CBE2826" w:rsidR="004A47C0" w:rsidRPr="00CE1CD9" w:rsidRDefault="004A47C0" w:rsidP="001A2E56">
|
||||
<w:pPr>
|
||||
<w:pStyle w:val="a3"/>
|
||||
@ -1004,14 +1017,7 @@
|
||||
<w:rFonts w:ascii="黑体" w:eastAsia="黑体" w:hAnsi="黑体" w:hint="eastAsia"/>
|
||||
<w:szCs w:val="21"/>
|
||||
</w:rPr>
|
||||
<w:t>请求</w:t>
|
||||
</w:r>
|
||||
<w:r w:rsidR="00CC78ED" w:rsidRPr="00CE1CD9">
|
||||
<w:rPr>
|
||||
<w:rFonts w:ascii="黑体" w:eastAsia="黑体" w:hAnsi="黑体" w:hint="eastAsia"/>
|
||||
<w:szCs w:val="21"/>
|
||||
</w:rPr>
|
||||
<w:t>示例</w:t>
|
||||
<w:t>${parameterExample.simpleRef} 示例</w:t>
|
||||
</w:r>
|
||||
</w:p>
|
||||
<w:tbl>
|
||||
@ -1043,10 +1049,19 @@
|
||||
<w:szCs w:val="18"/>
|
||||
</w:rPr>
|
||||
</w:pPr>
|
||||
<w:r w:rsidRPr="00C80924">
|
||||
<w:rPr>
|
||||
<w:rFonts w:ascii="黑体" w:eastAsia="黑体" w:hAnsi="黑体" w:hint="eastAsia"/>
|
||||
<w:sz w:val="18"/>
|
||||
<w:szCs w:val="18"/>
|
||||
</w:rPr>
|
||||
<w:t>${parameterExample.example}</w:t>
|
||||
</w:r>
|
||||
</w:p>
|
||||
</w:tc>
|
||||
</w:tr>
|
||||
</w:tbl>
|
||||
</#list>
|
||||
<w:p w14:paraId="184ECB3C" w14:textId="45A74D36" w:rsidR="0078442A" w:rsidRDefault="00C80924" w:rsidP="00CE1CD9">
|
||||
<w:pPr>
|
||||
<w:pStyle w:val="a3"/>
|
||||
@ -1137,7 +1152,7 @@
|
||||
<w:sz w:val="20"/>
|
||||
<w:szCs w:val="20"/>
|
||||
</w:rPr>
|
||||
<w:t>原因</w:t>
|
||||
<w:t>说明</w:t>
|
||||
</w:r>
|
||||
</w:p>
|
||||
</w:tc>
|
||||
@ -1165,7 +1180,7 @@
|
||||
<w:sz w:val="20"/>
|
||||
<w:szCs w:val="20"/>
|
||||
</w:rPr>
|
||||
<w:t>名称</w:t>
|
||||
<w:t>返回值</w:t>
|
||||
</w:r>
|
||||
</w:p>
|
||||
</w:tc>
|
||||
@ -1193,7 +1208,7 @@
|
||||
<w:sz w:val="20"/>
|
||||
<w:szCs w:val="20"/>
|
||||
</w:rPr>
|
||||
<w:t>响应类型</w:t>`
|
||||
<w:t>返回类型</w:t>`
|
||||
</w:r>
|
||||
</w:p>
|
||||
</w:tc>
|
||||
@ -1271,7 +1286,7 @@
|
||||
<w:sz w:val="20"/>
|
||||
<w:szCs w:val="20"/>
|
||||
</w:rPr>
|
||||
<w:t>xxx</w:t>
|
||||
<w:t>${response.simpleRef}</w:t>
|
||||
</w:r>
|
||||
</w:p>
|
||||
</w:tc>
|
||||
@ -1295,13 +1310,14 @@
|
||||
<w:sz w:val="20"/>
|
||||
<w:szCs w:val="20"/>
|
||||
</w:rPr>
|
||||
<w:t>object</w:t>
|
||||
<w:t>${response.type}</w:t>
|
||||
</w:r>
|
||||
</w:p>
|
||||
</w:tc>
|
||||
</w:tr>
|
||||
</#list>
|
||||
</w:tbl>
|
||||
<#list api.responseRefs as responseRef>
|
||||
<w:p w14:paraId="3E49EA28" w14:textId="7544DC55" w:rsidR="00B50D00" w:rsidRDefault="005F2E4B" w:rsidP="00B50D00">
|
||||
<w:pPr>
|
||||
<w:jc w:val="left"/>
|
||||
@ -1315,21 +1331,7 @@
|
||||
<w:rFonts w:ascii="黑体" w:eastAsia="黑体" w:hAnsi="黑体" w:hint="eastAsia"/>
|
||||
<w:szCs w:val="21"/>
|
||||
</w:rPr>
|
||||
<w:t>X</w:t>
|
||||
</w:r>
|
||||
<w:r>
|
||||
<w:rPr>
|
||||
<w:rFonts w:ascii="黑体" w:eastAsia="黑体" w:hAnsi="黑体"/>
|
||||
<w:szCs w:val="21"/>
|
||||
</w:rPr>
|
||||
<w:t>XXX</w:t>
|
||||
</w:r>
|
||||
<w:r>
|
||||
<w:rPr>
|
||||
<w:rFonts w:ascii="黑体" w:eastAsia="黑体" w:hAnsi="黑体" w:hint="eastAsia"/>
|
||||
<w:szCs w:val="21"/>
|
||||
</w:rPr>
|
||||
<w:t>属性</w:t>
|
||||
<w:t>${responseRef.name}对象属性</w:t>
|
||||
</w:r>
|
||||
</w:p>
|
||||
<w:tbl>
|
||||
@ -1428,7 +1430,7 @@
|
||||
<w:sz w:val="18"/>
|
||||
<w:szCs w:val="18"/>
|
||||
</w:rPr>
|
||||
<w:t>类型</w:t>
|
||||
<w:t>参数类型</w:t>
|
||||
</w:r>
|
||||
</w:p>
|
||||
</w:tc>
|
||||
@ -1456,11 +1458,13 @@
|
||||
<w:sz w:val="18"/>
|
||||
<w:szCs w:val="18"/>
|
||||
</w:rPr>
|
||||
<w:t>示例</w:t>
|
||||
<w:t>数据类型</w:t>
|
||||
</w:r>
|
||||
</w:p>
|
||||
</w:tc>
|
||||
</w:tr>
|
||||
<#if (responseRef.modelPropertiesList)??>
|
||||
<#list responseRef.modelPropertiesList as modelProperties>
|
||||
<w:tr w:rsidR="005F23E6" w:rsidRPr="00C80924" w14:paraId="3DBC8ECC" w14:textId="77777777" w:rsidTr="006B54D1">
|
||||
<w:trPr>
|
||||
<w:cnfStyle w:val="000000100000" w:firstRow="0" w:lastRow="0" w:firstColumn="0" w:lastColumn="0" w:oddVBand="0" w:evenVBand="0" w:oddHBand="1" w:evenHBand="0" w:firstRowFirstColumn="0" w:firstRowLastColumn="0" w:lastRowFirstColumn="0" w:lastRowLastColumn="0"/>
|
||||
@ -1479,6 +1483,14 @@
|
||||
<w:szCs w:val="18"/>
|
||||
</w:rPr>
|
||||
</w:pPr>
|
||||
<w:r>
|
||||
<w:rPr>
|
||||
<w:rFonts w:ascii="黑体" w:eastAsia="黑体" w:hAnsi="黑体" w:hint="eastAsia"/>
|
||||
<w:sz w:val="18"/>
|
||||
<w:szCs w:val="18"/>
|
||||
</w:rPr>
|
||||
<w:t>${modelProperties.name}</w:t>
|
||||
</w:r>
|
||||
</w:p>
|
||||
</w:tc>
|
||||
<w:tc>
|
||||
@ -1495,6 +1507,14 @@
|
||||
<w:szCs w:val="18"/>
|
||||
</w:rPr>
|
||||
</w:pPr>
|
||||
<w:r>
|
||||
<w:rPr>
|
||||
<w:rFonts w:ascii="黑体" w:eastAsia="黑体" w:hAnsi="黑体" w:hint="eastAsia"/>
|
||||
<w:sz w:val="18"/>
|
||||
<w:szCs w:val="18"/>
|
||||
</w:rPr>
|
||||
<w:t>${modelProperties.description}</w:t>
|
||||
</w:r>
|
||||
</w:p>
|
||||
</w:tc>
|
||||
<w:tc>
|
||||
@ -1511,6 +1531,14 @@
|
||||
<w:szCs w:val="18"/>
|
||||
</w:rPr>
|
||||
</w:pPr>
|
||||
<w:r>
|
||||
<w:rPr>
|
||||
<w:rFonts w:ascii="黑体" w:eastAsia="黑体" w:hAnsi="黑体" w:hint="eastAsia"/>
|
||||
<w:sz w:val="18"/>
|
||||
<w:szCs w:val="18"/>
|
||||
</w:rPr>
|
||||
<w:t>${modelProperties.type}</w:t>
|
||||
</w:r>
|
||||
</w:p>
|
||||
</w:tc>
|
||||
<w:tc>
|
||||
@ -1527,10 +1555,22 @@
|
||||
<w:szCs w:val="18"/>
|
||||
</w:rPr>
|
||||
</w:pPr>
|
||||
<w:r>
|
||||
<w:rPr>
|
||||
<w:rFonts w:ascii="黑体" w:eastAsia="黑体" w:hAnsi="黑体" w:hint="eastAsia"/>
|
||||
<w:sz w:val="18"/>
|
||||
<w:szCs w:val="18"/>
|
||||
</w:rPr>
|
||||
<w:t>${modelProperties.simpleRef}</w:t>
|
||||
</w:r>
|
||||
</w:p>
|
||||
</w:tc>
|
||||
</w:tr>
|
||||
</#list>
|
||||
</#if>
|
||||
</w:tbl>
|
||||
</#list>
|
||||
<#list api.responseExamples as responseExample>
|
||||
<w:p w14:paraId="73770BA9" w14:textId="5D8D764D" w:rsidR="00CE1CD9" w:rsidRDefault="00003A80" w:rsidP="00CE1CD9">
|
||||
<w:pPr>
|
||||
<w:pStyle w:val="a3"/>
|
||||
@ -1550,7 +1590,7 @@
|
||||
<w:rFonts w:ascii="黑体" w:eastAsia="黑体" w:hAnsi="黑体" w:hint="eastAsia"/>
|
||||
<w:szCs w:val="21"/>
|
||||
</w:rPr>
|
||||
<w:t>请求失败示例</w:t>
|
||||
<w:t>${responseExample.simpleRef}示例</w:t>
|
||||
</w:r>
|
||||
</w:p>
|
||||
<w:tbl>
|
||||
@ -1581,64 +1621,19 @@
|
||||
<w:szCs w:val="18"/>
|
||||
</w:rPr>
|
||||
</w:pPr>
|
||||
</w:p>
|
||||
</w:tc>
|
||||
</w:tr>
|
||||
</w:tbl>
|
||||
<w:p w14:paraId="2111782B" w14:textId="7345FB34" w:rsidR="00003A80" w:rsidRDefault="00003A80" w:rsidP="00CE1CD9">
|
||||
<w:pPr>
|
||||
<w:pStyle w:val="a3"/>
|
||||
<w:numPr>
|
||||
<w:ilvl w:val="0"/>
|
||||
<w:numId w:val="2"/>
|
||||
</w:numPr>
|
||||
<w:ind w:firstLineChars="0"/>
|
||||
<w:jc w:val="left"/>
|
||||
<w:rPr>
|
||||
<w:rFonts w:ascii="黑体" w:eastAsia="黑体" w:hAnsi="黑体"/>
|
||||
<w:szCs w:val="21"/>
|
||||
</w:rPr>
|
||||
</w:pPr>
|
||||
<w:r>
|
||||
<w:rPr>
|
||||
<w:rFonts w:ascii="黑体" w:eastAsia="黑体" w:hAnsi="黑体" w:hint="eastAsia"/>
|
||||
<w:szCs w:val="21"/>
|
||||
</w:rPr>
|
||||
<w:t>请求成功示例</w:t>
|
||||
</w:r>
|
||||
</w:p>
|
||||
<w:tbl>
|
||||
<w:tblPr>
|
||||
<w:tblStyle w:val="a4"/>
|
||||
<w:tblW w:w="0" w:type="auto"/>
|
||||
<w:tblLook w:val="04A0" w:firstRow="1" w:lastRow="0" w:firstColumn="1" w:lastColumn="0" w:noHBand="0" w:noVBand="1"/>
|
||||
</w:tblPr>
|
||||
<w:tblGrid>
|
||||
<w:gridCol w:w="8296"/>
|
||||
</w:tblGrid>
|
||||
<w:tr w:rsidR="00003A80" w14:paraId="33DDD8E3" w14:textId="77777777" w:rsidTr="008F69DD">
|
||||
<w:tc>
|
||||
<w:tcPr>
|
||||
<w:tcW w:w="8296" w:type="dxa"/>
|
||||
<w:tcBorders>
|
||||
<w:top w:val="single" w:sz="4" w:space="0" w:color="4472C4"/>
|
||||
<w:left w:val="single" w:sz="4" w:space="0" w:color="4472C4"/>
|
||||
<w:bottom w:val="single" w:sz="4" w:space="0" w:color="4472C4"/>
|
||||
<w:right w:val="single" w:sz="4" w:space="0" w:color="4472C4"/>
|
||||
</w:tcBorders>
|
||||
</w:tcPr>
|
||||
<w:p w14:paraId="6960710C" w14:textId="77777777" w:rsidR="00003A80" w:rsidRDefault="00003A80" w:rsidP="00003A80">
|
||||
<w:pPr>
|
||||
<w:jc w:val="left"/>
|
||||
<w:r w:rsidRPr="00C80924">
|
||||
<w:rPr>
|
||||
<w:rFonts w:ascii="黑体" w:eastAsia="黑体" w:hAnsi="黑体"/>
|
||||
<w:szCs w:val="21"/>
|
||||
<w:rFonts w:ascii="黑体" w:eastAsia="黑体" w:hAnsi="黑体" w:hint="eastAsia"/>
|
||||
<w:sz w:val="18"/>
|
||||
<w:szCs w:val="18"/>
|
||||
</w:rPr>
|
||||
</w:pPr>
|
||||
<w:t>${responseExample.example}</w:t>
|
||||
</w:r>
|
||||
</w:p>
|
||||
</w:tc>
|
||||
</w:tr>
|
||||
</w:tbl>
|
||||
</#list>
|
||||
<w:p w14:paraId="5EC2E1F7" w14:textId="77777777" w:rsidR="00003A80" w:rsidRPr="00003A80" w:rsidRDefault="00003A80" w:rsidP="00003A80">
|
||||
<w:pPr>
|
||||
<w:jc w:val="left"/>
|
||||
|
Loading…
Reference in New Issue
Block a user