diff --git a/define/seagger_ui.go b/define/seagger_ui.go index db5ef34..df64281 100644 --- a/define/seagger_ui.go +++ b/define/seagger_ui.go @@ -11,4 +11,5 @@ const ( SwaggerUIThemeDefault = "swaggerUI" // 文档默认主题 SwaggerUIThemeKnife4go = "knife4go" // knife4go 主题 SwaggerUIThemeYDocLucky = "ydoc-lucky-ui" // YDoc Lucky UI 主题: https://github.com/NoBugBoy/LuckyUI + SwaggerUIThemeRedocFree = "redoc-free" // redoc UI 主题, 开源免费版: https://github.com/Redocly/redoc ) diff --git a/generate.go b/generate.go index b1cdf44..08fa1b3 100644 --- a/generate.go +++ b/generate.go @@ -329,6 +329,7 @@ func (g *Generate) ParseReadConfigParam(requestCfg *define.UriBaseConfig, baseRe if inputType.Field(i).Anonymous { // 匿名字段, 直接对齐到当前的父级 g.ParseReadConfigParam(requestCfg, baseReqCfg, inputType.Field(i).Type) + continue } propertyName := ParseStructFieldTag.GetParamName(inputType.Field(i)) if propertyName == "-" { @@ -496,15 +497,16 @@ func (g *Generate) AddComponentsSchema(rootSchemaName string, pkgPath string, in // 结构体 if inputType.Kind() == reflect.Struct { for i := 0; i < inputType.NumField(); i++ { + propertyName := ParseStructFieldTag.GetParamName(inputType.Field(i)) + if propertyName == "-" { + continue + } + if inputType.Field(i).Anonymous { // 处理匿名字段 g.handleAnonymousField(schemaName, inputType.Field(i)) continue } - propertyName := ParseStructFieldTag.GetParamName(inputType.Field(i)) - if propertyName == "-" { - continue - } if inputType.Field(i).Type.Kind() == reflect.Ptr { // 处理指针 if inputType.Field(i).Type.Elem().Kind() == reflect.Struct { @@ -605,15 +607,15 @@ func (g *Generate) handleAnonymousField(schemaName string, field reflect.StructF handleType = handleType.Elem() } for i := 0; i < handleType.NumField(); i++ { - if handleType.Field(i).Anonymous { + itemField := handleType.Field(i) + if itemField.Anonymous { // 递归处理多层嵌套匿名字段 - g.handleAnonymousField(schemaName, handleType.Field(i)) + g.handleAnonymousField(schemaName, itemField) continue } else { - itemField := handleType.Field(i) baseConvertType, isBaseType := g.realBaseType2SwaggerType(itemField.Type.String()) if !isBaseType { - g.AddComponentsSchema(schemaName, itemField.Type.PkgPath(), itemField.Type) + g.AddComponentsSchema(schemaName, handleType.Field(i).Type.PkgPath(), handleType.Field(i).Type) continue } else { paramName := ParseStructFieldTag.GetParamName(itemField) @@ -621,8 +623,8 @@ func (g *Generate) handleAnonymousField(schemaName string, field reflect.StructF Type: baseConvertType, Format: itemField.Type.String(), Enum: ValidateRule.Enum(itemField), - Default: ParseStructFieldTag.GetDefaultValue(itemField), - Description: ParseStructFieldTag.GetParamDesc(itemField), + Default: ParseStructFieldTag.GetDefaultValue(handleType.Field(i)), + Description: ParseStructFieldTag.GetParamDesc(handleType.Field(i)), } if ValidateRule.IsRequired(itemField) { g.docData.Components.Schemas[schemaName].Required = append(g.docData.Components.Schemas[schemaName].Required, paramName) diff --git a/redoc-free/index.html b/redoc-free/index.html new file mode 100644 index 0000000..b24dbd1 --- /dev/null +++ b/redoc-free/index.html @@ -0,0 +1,29 @@ + + +
+