修复返回数组文档不显示问题

1.x
tanghc 5 years ago
parent 46ae5205fa
commit 96f9a489b4
  1. 19
      sop-example/sop-story/sop-story-web/src/main/java/com/gitee/sop/storyweb/controller/AlipayController.java
  2. 4
      sop-example/sop-story/sop-story-web/src/main/java/com/gitee/sop/storyweb/vo/FileUploadVO.java
  3. 1
      sop-website/website-server/src/main/java/com/gitee/sop/websiteserver/controller/SandboxController.java
  4. 138
      sop-website/website-server/src/main/java/com/gitee/sop/websiteserver/manager/SwaggerDocParser.java
  5. 470
      sop-website/website-server/src/main/resources/api.json

@ -17,7 +17,9 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
/**
* 支付宝服务端假设签名验证通过后到达这里进行具体的业务处理
@ -182,6 +184,23 @@ public class AlipayController {
return storyVO;
}
@ApiOperation(value = "返回数组结果", notes = "返回数组结果")
@ApiMapping(value = "alipay.story.find2")
public List<StoryVO> getStory3(StoryParam story) {
int index = 0;
StoryVO storyVO = new StoryVO();
storyVO.id = 1L;
storyVO.name = "白雪公主, index:" + index++;
storyVO.gmt_create = new Date();
StoryVO storyVO2 = new StoryVO();
storyVO2.id = 1L;
storyVO2.name = "白雪公主, index:" + index++;
storyVO2.gmt_create = new Date();
return Arrays.asList(storyVO, storyVO2);
}
/**
* 演示文档表格树
* @param story

@ -1,5 +1,6 @@
package com.gitee.sop.storyweb.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.ArrayList;
@ -25,8 +26,11 @@ public class FileUploadVO {
public FileMeta() {
}
@ApiModelProperty(value = "文件名称", example = "1.txt")
private String filename;
@ApiModelProperty(value = "文件大小", example = "109")
private long size;
@ApiModelProperty(value = "文件内容", example = "啊啊啊")
private String content;
}
}

@ -119,6 +119,7 @@ public class SandboxController {
result.apiResult = responseData;
return result;
} catch (Exception e) {
log.error("请求失败", e);
throw new RuntimeException("请求失败");
}
}

@ -8,7 +8,6 @@ import com.gitee.sop.websiteserver.bean.DocModule;
import com.gitee.sop.websiteserver.bean.DocParameter;
import com.gitee.sop.websiteserver.bean.DocParserContext;
import com.google.common.collect.Sets;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.BeanUtils;
import java.util.ArrayList;
@ -138,7 +137,7 @@ public class SwaggerDocParser implements DocParser {
})
.collect(Collectors.groupingBy(DocParameter::getModule));
collect.entrySet().stream()
collect.entrySet()
.forEach(entry -> {
DocParameter moduleDoc = new DocParameter();
moduleDoc.setName(entry.getKey());
@ -147,18 +146,25 @@ public class SwaggerDocParser implements DocParser {
docParameterList.add(moduleDoc);
});
List<DocParameter> ret = docParameterList.stream()
return docParameterList.stream()
.filter(docParameter -> !docParameter.getName().contains("."))
.collect(Collectors.toList());
return ret;
}
protected List<DocParameter> buildResponseParameterList(JSONObject docInfo, JSONObject docRoot) {
String responseRef = getResponseRef(docInfo);
RefInfo refInfo = getResponseRefInfo(docInfo);
List<DocParameter> respParameterList = Collections.emptyList();
if (StringUtils.isNotBlank(responseRef)) {
if (refInfo != null) {
String responseRef = refInfo.ref;
respParameterList = this.buildDocParameters(responseRef, docRoot);
// 如果返回数组
if (refInfo.isArray) {
DocParameter docParameter = new DocParameter();
docParameter.setName("items");
docParameter.setType("array");
docParameter.setRefs(respParameterList);
respParameterList = Collections.singletonList(docParameter);
}
}
return respParameterList;
}
@ -170,52 +176,104 @@ public class SwaggerDocParser implements DocParser {
List<DocParameter> docParameterList = new ArrayList<>();
for (String fieldName : fieldNames) {
/*
{
"description": "分类故事",
"$ref": "#/definitions/StoryVO",
"originalRef": "StoryVO"
{
"description": "分类故事",
"$ref": "#/definitions/StoryVO"
}
*/
JSONObject fieldInfo = properties.getJSONObject(fieldName);
DocParameter respParam = fieldInfo.toJavaObject(DocParameter.class);
respParam.setName(fieldName);
docParameterList.add(respParam);
String originalRef = isArray(fieldInfo) ? getRef(fieldInfo.getJSONObject(fieldName)) : getRef(fieldInfo);
if (StringUtils.isNotBlank(originalRef)) {
List<DocParameter> refs = buildDocParameters(originalRef, docRoot);
respParam.setRefs(refs);
DocParameter docParameter = fieldInfo.toJavaObject(DocParameter.class);
docParameter.setName(fieldName);
docParameterList.add(docParameter);
RefInfo refInfo = this.getRefInfo(fieldInfo);
if (refInfo != null) {
List<DocParameter> refs = buildDocParameters(refInfo.ref, docRoot);
docParameter.setRefs(refs);
}
}
return docParameterList;
}
protected boolean isArray(JSONObject fieldInfo) {
return "array".equalsIgnoreCase(fieldInfo.getString("type"));
}
private String getRef(JSONObject fieldInfo) {
return Optional.ofNullable(fieldInfo)
.map(jsonObject -> jsonObject.getString("originalRef"))
.orElse(null);
}
protected String getResponseRef(JSONObject docInfo) {
/**
* 简单对象返回
* "responses": {
* "200": {
* "description": "OK",
* "schema": {
* "$ref": "#/definitions/FileUploadVO"
* }
* },
* "401": {
* "description": "Unauthorized"
* },
* "403": {
* "description": "Forbidden"
* },
* "404": {
* "description": "Not Found"
* }
* }
* 纯数组返回
* "responses": {
* "200": {
* "description": "OK",
* "schema": {
* "type": "array",
* "items": {
* "$ref": "#/definitions/StoryVO"
* }
* }
* },
* "401": {
* "description": "Unauthorized"
* },
* "403": {
* "description": "Forbidden"
* },
* "404": {
* "description": "Not Found"
* }
* }
* @param docInfo
* @return
*/
protected RefInfo getResponseRefInfo(JSONObject docInfo) {
return Optional.ofNullable(docInfo.getJSONObject("responses"))
.flatMap(jsonObject -> Optional.ofNullable(jsonObject.getJSONObject("200")))
.flatMap(jsonObject -> Optional.ofNullable(jsonObject.getJSONObject("schema")))
.flatMap(jsonObject -> {
// #/definitions/Category
String $ref = jsonObject.getString("$ref");
if ($ref == null) {
return Optional.empty();
}
int index = $ref.lastIndexOf("/");
if (index > -1) {
$ref = $ref.substring(index + 1);
}
return Optional.of($ref);
.flatMap(schema -> {
RefInfo refInfo = getRefInfo(schema);
return Optional.ofNullable(refInfo);
})
.orElse("");
.orElse(null);
}
private RefInfo getRefInfo(JSONObject jsonObject) {
String $ref;
boolean isArray = "array".equals(jsonObject.getString("type"));
if (isArray) {
$ref = jsonObject.getJSONObject("items").getString("$ref");
} else {
// #/definitions/Category
$ref = jsonObject.getString("$ref");
}
if ($ref == null) {
return null;
}
int index = $ref.lastIndexOf("/");
if (index > -1) {
$ref = $ref.substring(index + 1);
}
RefInfo refInfo = new RefInfo();
refInfo.isArray = isArray;
refInfo.ref = $ref;
return refInfo;
}
private static class RefInfo {
private boolean isArray;
private String ref;
}
}

@ -6,7 +6,7 @@
"title": "故事API",
"termsOfService": "文档"
},
"host": "10.1.30.157:2222",
"host": "localhost:2222",
"basePath": "/",
"tags": [
{
@ -24,13 +24,16 @@
],
"paths": {
"/alipay.category.get/": {
"get": {
"post": {
"tags": [
"故事接口"
],
"summary": "获取分类信息",
"description": "演示表格树",
"operationId": "getCategoryUsingGET",
"operationId": "getCategoryUsingPOST",
"consumes": [
"application/json"
],
"produces": [
"*/*"
],
@ -74,10 +77,12 @@
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/Category",
"originalRef": "Category"
"$ref": "#/definitions/Category"
}
},
"201": {
"description": "Created"
},
"401": {
"description": "Unauthorized"
},
@ -91,62 +96,96 @@
"deprecated": false,
"sop_name": "alipay.category.get",
"sop_version": "1.0"
},
"head": {
}
},
"/alipay.story.find/": {
"get": {
"tags": [
"故事接口"
],
"summary": "获取分类信息",
"description": "演示表格树",
"operationId": "getCategoryUsingHEAD",
"consumes": [
"application/json"
],
"summary": "获取故事信息",
"description": "说明接口的详细信息,介绍,用途,注意事项等。",
"operationId": "getStory2UsingGET",
"produces": [
"*/*"
],
"parameters": [
{
"name": "categoryName",
"name": "id",
"in": "query",
"description": "分类名称",
"description": "故事ID",
"required": false,
"type": "string",
"x-example": "娱乐"
"type": "integer",
"format": "int32",
"x-example": 111
},
{
"name": "story.gmt_create",
"name": "name",
"in": "query",
"description": "创建时间",
"required": false,
"description": "故事名称",
"required": true,
"type": "string",
"format": "date-time",
"x-example": "2019-04-14 19:02:12"
"x-example": "白雪公主"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/StoryVO"
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"deprecated": false,
"sop_name": "alipay.story.find",
"sop_version": "1.0"
},
"head": {
"tags": [
"故事接口"
],
"summary": "获取故事信息",
"description": "说明接口的详细信息,介绍,用途,注意事项等。",
"operationId": "getStory2UsingHEAD",
"consumes": [
"application/json"
],
"produces": [
"*/*"
],
"parameters": [
{
"name": "story.id",
"name": "id",
"in": "query",
"description": "故事ID",
"required": false,
"type": "integer",
"format": "int64",
"x-example": 1
"format": "int32",
"x-example": 111
},
{
"name": "story.name",
"name": "name",
"in": "query",
"description": "故事名称",
"required": false,
"required": true,
"type": "string",
"x-example": "海底小纵队"
"x-example": "白雪公主"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/Category",
"originalRef": "Category"
"$ref": "#/definitions/StoryVO"
}
},
"204": {
@ -160,16 +199,16 @@
}
},
"deprecated": false,
"sop_name": "alipay.category.get",
"sop_name": "alipay.story.find",
"sop_version": "1.0"
},
"post": {
"tags": [
"故事接口"
],
"summary": "获取分类信息",
"description": "演示表格树",
"operationId": "getCategoryUsingPOST",
"summary": "获取故事信息",
"description": "说明接口的详细信息,介绍,用途,注意事项等。",
"operationId": "getStory2UsingPOST",
"consumes": [
"application/json"
],
@ -178,46 +217,28 @@
],
"parameters": [
{
"name": "categoryName",
"in": "query",
"description": "分类名称",
"required": false,
"type": "string",
"x-example": "娱乐"
},
{
"name": "story.gmt_create",
"in": "query",
"description": "创建时间",
"required": false,
"type": "string",
"format": "date-time",
"x-example": "2019-04-14 19:02:12"
},
{
"name": "story.id",
"name": "id",
"in": "query",
"description": "故事ID",
"required": false,
"type": "integer",
"format": "int64",
"x-example": 1
"format": "int32",
"x-example": 111
},
{
"name": "story.name",
"name": "name",
"in": "query",
"description": "故事名称",
"required": false,
"required": true,
"type": "string",
"x-example": "海底小纵队"
"x-example": "白雪公主"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/Category",
"originalRef": "Category"
"$ref": "#/definitions/StoryVO"
}
},
"201": {
@ -234,16 +255,16 @@
}
},
"deprecated": false,
"sop_name": "alipay.category.get",
"sop_name": "alipay.story.find",
"sop_version": "1.0"
},
"put": {
"tags": [
"故事接口"
],
"summary": "获取分类信息",
"description": "演示表格树",
"operationId": "getCategoryUsingPUT",
"summary": "获取故事信息",
"description": "说明接口的详细信息,介绍,用途,注意事项等。",
"operationId": "getStory2UsingPUT",
"consumes": [
"application/json"
],
@ -252,46 +273,28 @@
],
"parameters": [
{
"name": "categoryName",
"in": "query",
"description": "分类名称",
"required": false,
"type": "string",
"x-example": "娱乐"
},
{
"name": "story.gmt_create",
"in": "query",
"description": "创建时间",
"required": false,
"type": "string",
"format": "date-time",
"x-example": "2019-04-14 19:02:12"
},
{
"name": "story.id",
"name": "id",
"in": "query",
"description": "故事ID",
"required": false,
"type": "integer",
"format": "int64",
"x-example": 1
"format": "int32",
"x-example": 111
},
{
"name": "story.name",
"name": "name",
"in": "query",
"description": "故事名称",
"required": false,
"required": true,
"type": "string",
"x-example": "海底小纵队"
"x-example": "白雪公主"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/Category",
"originalRef": "Category"
"$ref": "#/definitions/StoryVO"
}
},
"201": {
@ -308,61 +311,43 @@
}
},
"deprecated": false,
"sop_name": "alipay.category.get",
"sop_name": "alipay.story.find",
"sop_version": "1.0"
},
"delete": {
"tags": [
"故事接口"
],
"summary": "获取分类信息",
"description": "演示表格树",
"operationId": "getCategoryUsingDELETE",
"summary": "获取故事信息",
"description": "说明接口的详细信息,介绍,用途,注意事项等。",
"operationId": "getStory2UsingDELETE",
"produces": [
"*/*"
],
"parameters": [
{
"name": "categoryName",
"in": "query",
"description": "分类名称",
"required": false,
"type": "string",
"x-example": "娱乐"
},
{
"name": "story.gmt_create",
"in": "query",
"description": "创建时间",
"required": false,
"type": "string",
"format": "date-time",
"x-example": "2019-04-14 19:02:12"
},
{
"name": "story.id",
"name": "id",
"in": "query",
"description": "故事ID",
"required": false,
"type": "integer",
"format": "int64",
"x-example": 1
"format": "int32",
"x-example": 111
},
{
"name": "story.name",
"name": "name",
"in": "query",
"description": "故事名称",
"required": false,
"required": true,
"type": "string",
"x-example": "海底小纵队"
"x-example": "白雪公主"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/Category",
"originalRef": "Category"
"$ref": "#/definitions/StoryVO"
}
},
"204": {
@ -376,16 +361,16 @@
}
},
"deprecated": false,
"sop_name": "alipay.category.get",
"sop_name": "alipay.story.find",
"sop_version": "1.0"
},
"options": {
"tags": [
"故事接口"
],
"summary": "获取分类信息",
"description": "演示表格树",
"operationId": "getCategoryUsingOPTIONS",
"summary": "获取故事信息",
"description": "说明接口的详细信息,介绍,用途,注意事项等。",
"operationId": "getStory2UsingOPTIONS",
"consumes": [
"application/json"
],
@ -394,46 +379,28 @@
],
"parameters": [
{
"name": "categoryName",
"in": "query",
"description": "分类名称",
"required": false,
"type": "string",
"x-example": "娱乐"
},
{
"name": "story.gmt_create",
"in": "query",
"description": "创建时间",
"required": false,
"type": "string",
"format": "date-time",
"x-example": "2019-04-14 19:02:12"
},
{
"name": "story.id",
"name": "id",
"in": "query",
"description": "故事ID",
"required": false,
"type": "integer",
"format": "int64",
"x-example": 1
"format": "int32",
"x-example": 111
},
{
"name": "story.name",
"name": "name",
"in": "query",
"description": "故事名称",
"required": false,
"required": true,
"type": "string",
"x-example": "海底小纵队"
"x-example": "白雪公主"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/Category",
"originalRef": "Category"
"$ref": "#/definitions/StoryVO"
}
},
"204": {
@ -447,16 +414,16 @@
}
},
"deprecated": false,
"sop_name": "alipay.category.get",
"sop_name": "alipay.story.find",
"sop_version": "1.0"
},
"patch": {
"tags": [
"故事接口"
],
"summary": "获取分类信息",
"description": "演示表格树",
"operationId": "getCategoryUsingPATCH",
"summary": "获取故事信息",
"description": "说明接口的详细信息,介绍,用途,注意事项等。",
"operationId": "getStory2UsingPATCH",
"consumes": [
"application/json"
],
@ -465,46 +432,28 @@
],
"parameters": [
{
"name": "categoryName",
"in": "query",
"description": "分类名称",
"required": false,
"type": "string",
"x-example": "娱乐"
},
{
"name": "story.gmt_create",
"in": "query",
"description": "创建时间",
"required": false,
"type": "string",
"format": "date-time",
"x-example": "2019-04-14 19:02:12"
},
{
"name": "story.id",
"name": "id",
"in": "query",
"description": "故事ID",
"required": false,
"type": "integer",
"format": "int64",
"x-example": 1
"format": "int32",
"x-example": 111
},
{
"name": "story.name",
"name": "name",
"in": "query",
"description": "故事名称",
"required": false,
"required": true,
"type": "string",
"x-example": "海底小纵队"
"x-example": "白雪公主"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/Category",
"originalRef": "Category"
"$ref": "#/definitions/StoryVO"
}
},
"204": {
@ -518,18 +467,18 @@
}
},
"deprecated": false,
"sop_name": "alipay.category.get",
"sop_name": "alipay.story.find",
"sop_version": "1.0"
}
},
"/alipay.story.find/": {
"/alipay.story.find2/": {
"get": {
"tags": [
"故事接口"
],
"summary": "获取故事信息",
"description": "说明接口的详细信息,介绍,用途,注意事项等。",
"operationId": "getStory2UsingGET",
"summary": "返回数组结果",
"description": "返回数组结果",
"operationId": "getStory3UsingGET",
"produces": [
"*/*"
],
@ -556,8 +505,10 @@
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/StoryVO",
"originalRef": "StoryVO"
"type": "array",
"items": {
"$ref": "#/definitions/StoryVO"
}
}
},
"401": {
@ -571,16 +522,16 @@
}
},
"deprecated": false,
"sop_name": "alipay.story.find",
"sop_name": "alipay.story.find2",
"sop_version": "1.0"
},
"head": {
"tags": [
"故事接口"
],
"summary": "获取故事信息",
"description": "说明接口的详细信息,介绍,用途,注意事项等。",
"operationId": "getStory2UsingHEAD",
"summary": "返回数组结果",
"description": "返回数组结果",
"operationId": "getStory3UsingHEAD",
"consumes": [
"application/json"
],
@ -610,8 +561,10 @@
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/StoryVO",
"originalRef": "StoryVO"
"type": "array",
"items": {
"$ref": "#/definitions/StoryVO"
}
}
},
"204": {
@ -625,16 +578,16 @@
}
},
"deprecated": false,
"sop_name": "alipay.story.find",
"sop_name": "alipay.story.find2",
"sop_version": "1.0"
},
"post": {
"tags": [
"故事接口"
],
"summary": "获取故事信息",
"description": "说明接口的详细信息,介绍,用途,注意事项等。",
"operationId": "getStory2UsingPOST",
"summary": "返回数组结果",
"description": "返回数组结果",
"operationId": "getStory3UsingPOST",
"consumes": [
"application/json"
],
@ -664,8 +617,10 @@
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/StoryVO",
"originalRef": "StoryVO"
"type": "array",
"items": {
"$ref": "#/definitions/StoryVO"
}
}
},
"201": {
@ -682,16 +637,16 @@
}
},
"deprecated": false,
"sop_name": "alipay.story.find",
"sop_name": "alipay.story.find2",
"sop_version": "1.0"
},
"put": {
"tags": [
"故事接口"
],
"summary": "获取故事信息",
"description": "说明接口的详细信息,介绍,用途,注意事项等。",
"operationId": "getStory2UsingPUT",
"summary": "返回数组结果",
"description": "返回数组结果",
"operationId": "getStory3UsingPUT",
"consumes": [
"application/json"
],
@ -721,8 +676,10 @@
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/StoryVO",
"originalRef": "StoryVO"
"type": "array",
"items": {
"$ref": "#/definitions/StoryVO"
}
}
},
"201": {
@ -739,16 +696,16 @@
}
},
"deprecated": false,
"sop_name": "alipay.story.find",
"sop_name": "alipay.story.find2",
"sop_version": "1.0"
},
"delete": {
"tags": [
"故事接口"
],
"summary": "获取故事信息",
"description": "说明接口的详细信息,介绍,用途,注意事项等。",
"operationId": "getStory2UsingDELETE",
"summary": "返回数组结果",
"description": "返回数组结果",
"operationId": "getStory3UsingDELETE",
"produces": [
"*/*"
],
@ -775,8 +732,10 @@
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/StoryVO",
"originalRef": "StoryVO"
"type": "array",
"items": {
"$ref": "#/definitions/StoryVO"
}
}
},
"204": {
@ -790,16 +749,16 @@
}
},
"deprecated": false,
"sop_name": "alipay.story.find",
"sop_name": "alipay.story.find2",
"sop_version": "1.0"
},
"options": {
"tags": [
"故事接口"
],
"summary": "获取故事信息",
"description": "说明接口的详细信息,介绍,用途,注意事项等。",
"operationId": "getStory2UsingOPTIONS",
"summary": "返回数组结果",
"description": "返回数组结果",
"operationId": "getStory3UsingOPTIONS",
"consumes": [
"application/json"
],
@ -829,8 +788,10 @@
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/StoryVO",
"originalRef": "StoryVO"
"type": "array",
"items": {
"$ref": "#/definitions/StoryVO"
}
}
},
"204": {
@ -844,16 +805,16 @@
}
},
"deprecated": false,
"sop_name": "alipay.story.find",
"sop_name": "alipay.story.find2",
"sop_version": "1.0"
},
"patch": {
"tags": [
"故事接口"
],
"summary": "获取故事信息",
"description": "说明接口的详细信息,介绍,用途,注意事项等。",
"operationId": "getStory2UsingPATCH",
"summary": "返回数组结果",
"description": "返回数组结果",
"operationId": "getStory3UsingPATCH",
"consumes": [
"application/json"
],
@ -883,8 +844,10 @@
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/StoryVO",
"originalRef": "StoryVO"
"type": "array",
"items": {
"$ref": "#/definitions/StoryVO"
}
}
},
"204": {
@ -898,7 +861,7 @@
}
},
"deprecated": false,
"sop_name": "alipay.story.find",
"sop_name": "alipay.story.find2",
"sop_version": "1.0"
}
},
@ -939,8 +902,7 @@
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/FileUploadVO",
"originalRef": "FileUploadVO"
"$ref": "#/definitions/FileUploadVO"
}
},
"401": {
@ -996,8 +958,7 @@
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/FileUploadVO",
"originalRef": "FileUploadVO"
"$ref": "#/definitions/FileUploadVO"
}
},
"204": {
@ -1053,8 +1014,7 @@
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/FileUploadVO",
"originalRef": "FileUploadVO"
"$ref": "#/definitions/FileUploadVO"
}
},
"201": {
@ -1113,8 +1073,7 @@
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/FileUploadVO",
"originalRef": "FileUploadVO"
"$ref": "#/definitions/FileUploadVO"
}
},
"201": {
@ -1170,8 +1129,7 @@
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/FileUploadVO",
"originalRef": "FileUploadVO"
"$ref": "#/definitions/FileUploadVO"
}
},
"204": {
@ -1227,8 +1185,7 @@
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/FileUploadVO",
"originalRef": "FileUploadVO"
"$ref": "#/definitions/FileUploadVO"
}
},
"204": {
@ -1284,8 +1241,7 @@
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/FileUploadVO",
"originalRef": "FileUploadVO"
"$ref": "#/definitions/FileUploadVO"
}
},
"204": {
@ -1326,8 +1282,7 @@
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/FileUploadVO",
"originalRef": "FileUploadVO"
"$ref": "#/definitions/FileUploadVO"
}
},
"401": {
@ -1370,8 +1325,7 @@
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/FileUploadVO",
"originalRef": "FileUploadVO"
"$ref": "#/definitions/FileUploadVO"
}
},
"204": {
@ -1414,8 +1368,7 @@
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/FileUploadVO",
"originalRef": "FileUploadVO"
"$ref": "#/definitions/FileUploadVO"
}
},
"201": {
@ -1461,8 +1414,7 @@
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/FileUploadVO",
"originalRef": "FileUploadVO"
"$ref": "#/definitions/FileUploadVO"
}
},
"201": {
@ -1505,8 +1457,7 @@
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/FileUploadVO",
"originalRef": "FileUploadVO"
"$ref": "#/definitions/FileUploadVO"
}
},
"204": {
@ -1549,8 +1500,7 @@
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/FileUploadVO",
"originalRef": "FileUploadVO"
"$ref": "#/definitions/FileUploadVO"
}
},
"204": {
@ -1593,8 +1543,7 @@
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/FileUploadVO",
"originalRef": "FileUploadVO"
"$ref": "#/definitions/FileUploadVO"
}
},
"204": {
@ -1628,8 +1577,7 @@
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/Story",
"originalRef": "Story"
"$ref": "#/definitions/Story"
}
},
"401": {
@ -1663,8 +1611,7 @@
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/Story",
"originalRef": "Story"
"$ref": "#/definitions/Story"
}
},
"204": {
@ -1698,8 +1645,7 @@
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/Story",
"originalRef": "Story"
"$ref": "#/definitions/Story"
}
},
"201": {
@ -1736,8 +1682,7 @@
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/Story",
"originalRef": "Story"
"$ref": "#/definitions/Story"
}
},
"201": {
@ -1771,8 +1716,7 @@
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/Story",
"originalRef": "Story"
"$ref": "#/definitions/Story"
}
},
"204": {
@ -1806,8 +1750,7 @@
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/Story",
"originalRef": "Story"
"$ref": "#/definitions/Story"
}
},
"204": {
@ -1841,8 +1784,7 @@
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/Story",
"originalRef": "Story"
"$ref": "#/definitions/Story"
}
},
"204": {
@ -1872,8 +1814,7 @@
},
"story": {
"description": "分类故事",
"$ref": "#/definitions/StoryVO",
"originalRef": "StoryVO"
"$ref": "#/definitions/StoryVO"
}
},
"title": "Category"
@ -1900,8 +1841,7 @@
"files": {
"type": "array",
"items": {
"$ref": "#/definitions/FileMeta",
"originalRef": "FileMeta"
"$ref": "#/definitions/FileMeta"
}
}
},

Loading…
Cancel
Save