fix: the parameter "required" in the Swagger document generated for repair is incorrect (#4791)

This commit is contained in:
kesonan
2025-04-21 12:18:02 +08:00
committed by GitHub
parent 9c478626d2
commit 94e7753262

View File

@@ -238,16 +238,37 @@ func rangeMemberAndDo(structType apiSpec.Type, do func(tag *apiSpec.Tags, requir
var members = expandMembers(structType)
for _, field := range members {
var required = false
for _, t := range field.Tags() {
required = len(t.Options) > 0 && t.Options[0] != "optional"
}
tags, _ := apiSpec.Parse(field.Tag)
required := isRequired(tags)
do(tags, required, field)
}
}
func isRequired(tags *apiSpec.Tags) bool {
tag, err := tags.Get(tagJson)
if err == nil {
return !isOptional(tag.Options)
}
tag, err = tags.Get(tagForm)
if err == nil {
return !isOptional(tag.Options)
}
tag, err = tags.Get(tagPath)
if err == nil {
return !isOptional(tag.Options)
}
return false
}
func isOptional(options []string) bool {
for _, option := range options {
if option == "optional" {
return true
}
}
return false
}
func pathVariable2SwaggerVariable(path string) string {
pathItems := strings.FieldsFunc(path, slashRune)
var resp []string