openapi格式的文档基础生成 #3
@ -326,9 +326,6 @@ func (g *Generate) AddComponentsSchema(rootSchemaName string, pkgPath string, in
|
|||||||
}
|
}
|
||||||
// g.docData.Components.Schemas[schemaName].Ref = consts.SwaggerDataTypeObject
|
// g.docData.Components.Schemas[schemaName].Ref = consts.SwaggerDataTypeObject
|
||||||
for i := 0; i < inputType.NumField(); i++ {
|
for i := 0; i < inputType.NumField(); i++ {
|
||||||
// 设置参数各种属性
|
|
||||||
g.setStructFieldProperty(schemaName, inputType.Field(i))
|
|
||||||
|
|
||||||
if inputType.Field(i).Type.Kind() == reflect.Ptr ||
|
if inputType.Field(i).Type.Kind() == reflect.Ptr ||
|
||||||
inputType.Field(i).Type.Kind() == reflect.Struct ||
|
inputType.Field(i).Type.Kind() == reflect.Struct ||
|
||||||
inputType.Field(i).Type.Kind() == reflect.Map ||
|
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)),
|
Description: ParseStructField.GetParamDesc(inputType.Field(i)),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// 设置参数各种属性
|
||||||
|
g.setStructFieldProperty(schemaName, inputType.Field(i))
|
||||||
}
|
}
|
||||||
return schemaName
|
return schemaName
|
||||||
}
|
}
|
||||||
@ -474,4 +473,5 @@ func (g *Generate) setStructFieldProperty(schemaName string, structField reflect
|
|||||||
if ValidateRule.IsRequired(structField) {
|
if ValidateRule.IsRequired(structField) {
|
||||||
g.docData.Components.Schemas[schemaName].Required = append(g.docData.Components.Schemas[schemaName].Required, paramName)
|
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) {
|
func Test_parser_Openapi3(t *testing.T) {
|
||||||
type User struct {
|
type User struct {
|
||||||
Name string `json:"name" d:"zhang" desc:"用户姓名" binding:"required"`
|
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 {
|
type List struct {
|
||||||
Total int64 `json:"total" binding:"required"`
|
Total int64 `json:"total" binding:"required"`
|
||||||
|
@ -31,6 +31,20 @@ func (r validateRule) IsRequired(structField reflect.StructField) bool {
|
|||||||
return exist
|
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 解析验证规则表
|
// getValidateRuleTable 解析验证规则表
|
||||||
//
|
//
|
||||||
// Author : go_developer@163.com<白茶清欢>
|
// Author : go_developer@163.com<白茶清欢>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user