openapi格式的文档基础生成 #3

Merged
zhangdeman merged 32 commits from feature/upgrade_swagger into master 2025-02-14 21:13:00 +08:00
3 changed files with 18 additions and 4 deletions
Showing only changes of commit f1c0e473f4 - Show all commits

View File

@ -326,9 +326,6 @@ func (g *Generate) AddComponentsSchema(rootSchemaName string, pkgPath string, in
}
// g.docData.Components.Schemas[schemaName].Ref = consts.SwaggerDataTypeObject
for i := 0; i < inputType.NumField(); i++ {
// 设置参数各种属性
g.setStructFieldProperty(schemaName, inputType.Field(i))
if inputType.Field(i).Type.Kind() == reflect.Ptr ||
inputType.Field(i).Type.Kind() == reflect.Struct ||
inputType.Field(i).Type.Kind() == reflect.Map ||
@ -377,6 +374,8 @@ func (g *Generate) AddComponentsSchema(rootSchemaName string, pkgPath string, in
Description: ParseStructField.GetParamDesc(inputType.Field(i)),
}
}
// 设置参数各种属性
g.setStructFieldProperty(schemaName, inputType.Field(i))
}
return schemaName
}
@ -474,4 +473,5 @@ func (g *Generate) setStructFieldProperty(schemaName string, structField reflect
if ValidateRule.IsRequired(structField) {
g.docData.Components.Schemas[schemaName].Required = append(g.docData.Components.Schemas[schemaName].Required, paramName)
}
g.docData.Components.Schemas[schemaName].Properties[ParseStructField.GetParamName(structField)].Enum = ValidateRule.Enum(structField)
}

View File

@ -25,7 +25,7 @@ import (
func Test_parser_Openapi3(t *testing.T) {
type User struct {
Name string `json:"name" d:"zhang" desc:"用户姓名" binding:"required"`
Age int `json:"age" d:"18" desc:"年龄" binding:"required"`
Age int `json:"age" d:"18" desc:"年龄" binding:"required,oneof:12 13 18 90"`
}
type List struct {
Total int64 `json:"total" binding:"required"`

View File

@ -31,6 +31,20 @@ func (r validateRule) IsRequired(structField reflect.StructField) bool {
return exist
}
// Enum 获取枚举值
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 17:23 2025/2/13
func (r validateRule) Enum(structField reflect.StructField) []string {
ruleTable := r.getValidateRuleTable(structField)
oneOfValue, _ := ruleTable[consts.ValidatorRuleCommonOneOf.String()]
if len(oneOfValue) == 0 {
return []string{}
}
return strings.Split(oneOfValue, " ")
}
// getValidateRuleTable 解析验证规则表
//
// Author : go_developer@163.com<白茶清欢>