From 0fc52fe51bf5a5fb0a528537c46f9b6695383850 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E8=8C=B6=E6=B8=85=E6=AC=A2?= Date: Mon, 17 Feb 2025 22:04:23 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BD=A0=E5=90=8D=E5=AD=97?= =?UTF-8?q?=E7=AB=AF=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- generate.go | 9 +++++++-- parser_test.go | 5 +++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/generate.go b/generate.go index 77f5f0f..8433d85 100644 --- a/generate.go +++ b/generate.go @@ -610,17 +610,22 @@ func (g *Generate) handleAnonymousField(schemaName string, field reflect.StructF g.handleAnonymousField(schemaName, handleType.Field(i)) continue } else { - if handleType.Kind() == reflect.Map || handleType.Kind() == reflect.Slice || handleType.Kind() == reflect.Array || handleType.Kind() == reflect.Struct || handleType.Kind() == reflect.Ptr { + itemField := handleType.Field(i) + if itemField.Type.Kind() == reflect.Map || itemField.Type.Kind() == reflect.Slice || itemField.Type.Kind() == reflect.Array || itemField.Type.Kind() == reflect.Struct || itemField.Type.Kind() == reflect.Ptr { g.AddComponentsSchema(schemaName, handleType.Field(i).Type.PkgPath(), handleType.Field(i).Type) continue } else { - g.docData.Components.Schemas[schemaName].Properties[ParseStructField.GetParamName(handleType.Field(i))] = &define.Property{ + paramName := ParseStructField.GetParamName(itemField) + g.docData.Components.Schemas[schemaName].Properties[paramName] = &define.Property{ Type: g.realBaseType2SwaggerType(handleType.Field(i).Type.String()), Format: handleType.Field(i).Type.String(), Enum: ValidateRule.Enum(handleType.Field(i)), Default: ParseStructField.GetDefaultValue(handleType.Field(i)), Description: ParseStructField.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/parser_test.go b/parser_test.go index a9fd398..feb4558 100644 --- a/parser_test.go +++ b/parser_test.go @@ -25,10 +25,15 @@ type Meta struct { // // Date : 17:55 2024/7/19 func Test_parser_Openapi3(t *testing.T) { + type UserExt struct { + Job string `json:"job" dc:"job" binding:"required"` + Height string `json:"height" dc:"height" binding:"required"` + } type User struct { Meta `json:"-" deprecated:"false" path:"/user/detail" method:"POST" desc:"测试接口" tag:"用户,搜索" content_type:"application/json" output_content_type:"application/json"` Name *string `json:"name" d:"zhang" desc:"用户姓名" binding:"required"` Age string `json:"age" d:"18" desc:"年龄" binding:"required,oneof=12 13 18 90"` + UserExt } type UserDelete struct { Meta `json:"-" deprecated:"false" path:"/user/detail" method:"DELETE" desc:"测试接口" tag:"用户,搜索" content_type:"application/json" output_content_type:"application/json"`