From a5398ae6b9fd363c18beb1a8587689a54440dee2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E8=8C=B6=E6=B8=85=E6=AC=A2?= Date: Sat, 15 Feb 2025 12:19:28 +0800 Subject: [PATCH 1/2] fix test --- parser_test.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/parser_test.go b/parser_test.go index 93348dd..f53a214 100644 --- a/parser_test.go +++ b/parser_test.go @@ -78,11 +78,11 @@ func Test_parser_Openapi3(t *testing.T) { Variables: nil, }, }) - g.AddApiFromInAndOut(reflect.TypeOf(f), reflect.TypeOf(o)) - g.AddApiFromInAndOut(reflect.TypeOf(fd), reflect.TypeOf(o)) - g.AddApiFromInAndOut(reflect.TypeOf(up), reflect.TypeOf(o)) - g.AddApiFromInAndOut(reflect.TypeOf(ug), reflect.TypeOf(o)) - g.AddApiFromInAndOut(reflect.TypeOf(uh), reflect.TypeOf(o)) + g.AddApiFromInAndOut("", reflect.TypeOf(f), reflect.TypeOf(o)) + g.AddApiFromInAndOut("", reflect.TypeOf(fd), reflect.TypeOf(o)) + g.AddApiFromInAndOut("", reflect.TypeOf(up), reflect.TypeOf(o)) + g.AddApiFromInAndOut("", reflect.TypeOf(ug), reflect.TypeOf(o)) + g.AddApiFromInAndOut("", reflect.TypeOf(uh), reflect.TypeOf(o)) byteData, _ := json.Marshal(g.docData) fmt.Println(string(byteData)) } From e41bac4cd1ef263ebe5b0a034ea692792809cea8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E8=8C=B6=E6=B8=85=E6=AC=A2?= Date: Sat, 15 Feb 2025 13:13:01 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=95=B0=E7=BB=84?= =?UTF-8?q?=E6=8C=87=E9=92=88=E8=A7=A3=E6=9E=90=E7=9A=84BUG?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- generate.go | 4 ++++ parser_test.go | 20 ++++++++++---------- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/generate.go b/generate.go index 235cb54..58821e2 100644 --- a/generate.go +++ b/generate.go @@ -547,6 +547,9 @@ func (g *Generate) parseSliceItem(rootSchemaName string, inputType reflect.Type) } sliceValue := reflect.MakeSlice(inputType, 1, 1) sliceItemType := sliceValue.Index(0).Type() + if sliceItemType.Kind() == reflect.Ptr { + sliceItemType = sliceItemType.Elem() + } g.AddComponentsSchema(rootSchemaName, sliceItemType.PkgPath(), sliceItemType) if len(sliceItemType.PkgPath()) == 0 { return sliceItemType.String() @@ -563,6 +566,7 @@ func (g *Generate) getSchemaRef(schemaName string) string { if "" == schemaName { return "" } + schemaName = strings.ReplaceAll(schemaName, "*", "") // 去除指针类型 * return "#/components/schemas/" + strings.ReplaceAll(schemaName, "/", "-") } diff --git a/parser_test.go b/parser_test.go index f53a214..a33b373 100644 --- a/parser_test.go +++ b/parser_test.go @@ -27,8 +27,8 @@ type Meta struct { func Test_parser_Openapi3(t *testing.T) { 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"` + Name *string `json:"name" d:"zhang" desc:"用户姓名" binding:"required"` + Age string `json:"age" d:"18" desc:"年龄" binding:"required,oneof=12 13 18 90"` } type UserDelete struct { Meta `json:"-" deprecated:"false" path:"/user/detail" method:"DELETE" desc:"测试接口" tag:"用户,搜索" content_type:"application/json" output_content_type:"application/json"` @@ -51,15 +51,15 @@ func Test_parser_Openapi3(t *testing.T) { Age string `json:"age" d:"18" desc:"年龄" binding:"required,oneof=12 13 18 90"` } type List struct { - Total int64 `json:"total" binding:"required"` - UserList []User `json:"user_list"` + Total int64 `json:"total" binding:"required"` + UserList []*User `json:"user_list"` } - var o List - var f User - var fd UserDelete - var up UserPut - var ug UserGet - var uh UserHead + var o *List + var f *User + var fd *UserDelete + var up *UserPut + var ug *UserGet + var uh *UserHead g := NewOpenapiDoc(nil, []*define.ServerItem{ &define.ServerItem{ Url: "http://127.0.0.1/v1",