openapi格式的文档基础生成 #3
@ -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)
|
||||
}
|
||||
|
@ -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"`
|
||||
|
@ -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<白茶清欢>
|
||||
|
Loading…
x
Reference in New Issue
Block a user