增加获取真实definitions key方法, 优化参数配置构建
This commit is contained in:
parent
dd46f5ad80
commit
e044ff3e59
@ -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/")
|
||||
}
|
||||
|
42
swagger.go
42
swagger.go
@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user