参数 + 返回值支持自动展开一层数组

This commit is contained in:
2024-12-25 14:38:08 +08:00
parent f58f8da722
commit e70634a318
2 changed files with 61 additions and 6 deletions

View File

@ -57,7 +57,7 @@ func buildUriList(swaggerDoc *define.Swagger) ([]*define.UriBaseConfig, error) {
Summary: methodConfig.Summary,
Description: methodConfig.Description,
ParamList: buildSwagger2ParamConfig(swaggerDoc, methodConfig.Parameters),
ResultList: buildSwagger2ResultConfig(swaggerDoc, itemUri, methodConfig.Responses),
ResultList: buildSwagger2ResultConfig(swaggerDoc, methodConfig.Responses),
}
uriList = append(uriList, uriResult)
}
@ -128,6 +128,10 @@ func buildSwagger2ParamConfig(swaggerDoc *define.Swagger, paramConfigList []*def
Required: requiredTable[paramName],
}
res = append(res, paramConfigBuildConfig)
if DataTypeIsArray(paramMoreConfig.Type) && nil != paramMoreConfig.Items && len(paramMoreConfig.Items.Ref) > 0 {
// 是数组,且每一项是对象, 继续展开
res = append(res, ExpandArrayParam(swaggerDoc, paramMoreConfig.Items.Ref, paramConfigBuildConfig.Path)...)
}
}
}
@ -135,7 +139,7 @@ func buildSwagger2ParamConfig(swaggerDoc *define.Swagger, paramConfigList []*def
}
// buildSwagger2ResultConfig 构建响应结果配置
func buildSwagger2ResultConfig(swaggerDoc *define.Swagger, uri string, resultConfig map[string]*define.SwaggerPathConfigResponse) []*define.ResultConfig {
func buildSwagger2ResultConfig(swaggerDoc *define.Swagger, resultConfig map[string]*define.SwaggerPathConfigResponse) []*define.ResultConfig {
res := make([]*define.ResultConfig, 0)
if nil == resultConfig || len(resultConfig) == 0 {
return res
@ -173,19 +177,25 @@ func buildSwagger2ResultConfig(swaggerDoc *define.Swagger, uri string, resultCon
responseKey := GetRealResponseKey(successResponseConfig.Ref)
responseTypeDefine := swaggerDoc.Responses[responseKey]
responseType := ""
if nil != responseTypeDefine.Schema {
schemaType := ""
if nil == responseTypeDefine.Schema {
// 204 等场景下可能没有响应body
responseType = consts.DataTypeAny.String()
} else {
schemaType = responseTypeDefine.Schema.Type
responseType = GetDataType(responseTypeDefine.Schema.Type, "").String()
}
res = append(res, &define.ResultConfig{
resCfg := &define.ResultConfig{
Location: consts.ResponseDataLocationBody.String(),
Path: consts.ResponseDataLocationBodyRoot.String(),
Type: responseType,
Title: "response body",
Description: "response body",
})
}
res = append(res, resCfg)
if DataTypeIsArray(schemaType) && len(responseTypeDefine.Schema.Items.Ref) > 0 {
res = append(res, ExpandArrayResult(swaggerDoc, responseTypeDefine.Schema.Items.Ref, resCfg.Path)...)
}
} else {
responseTypeDefine := swaggerDoc.Definitions[definitionsKey]
for responseKey, responseKeyConfig := range responseTypeDefine.Properties {