增加获取真实definitions key方法, 优化参数配置构建

This commit is contained in:
白茶清欢 2024-12-24 14:34:19 +08:00
parent dd46f5ad80
commit e044ff3e59
2 changed files with 37 additions and 10 deletions

View File

@ -85,3 +85,8 @@ func GetParamLocation(docParamLocation string) consts.RequestDataLocation {
return consts.RequestDataLocationQuery
}
}
// GetRealDefinitionsKey 统统schema下的 $ref 获取真实的 definitions key
func GetRealDefinitionsKey(ref string) string {
return strings.TrimPrefix(ref, "#/definitions/")
}

View File

@ -95,17 +95,39 @@ func buildSwagger2ParamConfig(swaggerDoc *define.Swagger, paramConfigList []*def
res := make([]*define.ParamConfig, 0)
// 解析参数
for _, paramConfig := range paramConfigList {
paramConfigBuildConfig := &define.ParamConfig{
Location: GetParamLocation(paramConfig.In).String(),
Path: paramConfig.Name,
Type: GetParamType(paramConfig.Type, paramConfig.Format).String(),
Title: paramConfig.Name,
Description: paramConfig.Description,
Required: paramConfig.Required,
if paramConfig.Name != "body" {
paramConfigBuildConfig := &define.ParamConfig{
Location: GetParamLocation(paramConfig.In).String(),
Path: paramConfig.Name,
Type: GetParamType(paramConfig.Type, paramConfig.Format).String(),
Title: paramConfig.Name,
Description: paramConfig.Description,
Required: paramConfig.Required,
}
res = append(res, paramConfigBuildConfig)
}
res = append(res, paramConfigBuildConfig)
if nil != paramConfig.Schema && len(paramConfig.Schema.Ref) > 0 {
// TODO : 可以继续展开
if nil == paramConfig.Schema || len(paramConfig.Schema.Ref) == 0 {
continue
}
// 可以继续展开
requiredTable := make(map[string]bool)
for _, paramName := range swaggerDoc.Definitions[GetRealDefinitionsKey(paramConfig.Schema.Ref)].Required {
requiredTable[paramName] = true
}
for paramName, paramMoreConfig := range swaggerDoc.Definitions[GetRealDefinitionsKey(paramConfig.Schema.Ref)].Properties {
if paramConfig.Name != "body" {
paramName = paramConfig.Name + "." + paramName
}
paramConfigBuildConfig := &define.ParamConfig{
Location: GetParamLocation(paramConfig.In).String(),
Path: paramName,
Type: GetParamType(paramMoreConfig.Type, "").String(),
Title: paramMoreConfig.Description,
Description: paramMoreConfig.Description,
Required: requiredTable[paramName],
}
res = append(res, paramConfigBuildConfig)
}
}