From 11e374395b98b1e267df1e9bb94f5cc90353da7b Mon Sep 17 00:00:00 2001 From: Lansong <2095621390@qq.com> Date: Tue, 21 Nov 2023 20:46:12 +0800 Subject: [PATCH 1/3] =?UTF-8?q?fix(parser.go):=20=E4=BF=AE=E5=A4=8Dvalidat?= =?UTF-8?q?e=E5=AD=97=E6=AE=B5=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1.添加validateKey 2.生成时忽略validate字段 --- generate/parser.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/generate/parser.go b/generate/parser.go index b4af259..123b469 100644 --- a/generate/parser.go +++ b/generate/parser.go @@ -18,6 +18,7 @@ import ( var strColon = []byte(":") const ( + validateKey = "validate" defaultOption = "default" stringOption = "string" optionalOption = "optional" @@ -390,6 +391,10 @@ func renderStruct(member spec.Member) swaggerParameterObject { sp := swaggerParameterObject{In: "query", Type: ftype, Format: format} for _, tag := range member.Tags() { + if tag.Key == validateKey { + continue + } + sp.Name = tag.Name if len(tag.Options) == 0 { sp.Required = true @@ -491,6 +496,9 @@ func renderReplyAsDefinition(d swaggerDefinitionsObject, m messageMap, p []spec. *schema.Properties = append(*schema.Properties, kv) for _, tag := range member.Tags() { + if tag.Key == validateKey { + continue + } if len(tag.Options) == 0 { if !contains(schema.Required, tag.Name) && tag.Name != "required" { schema.Required = append(schema.Required, tag.Name) From 15afacbabed411e2bbd88c095e1158a5675ef4a6 Mon Sep 17 00:00:00 2001 From: Lansong <2095621390@qq.com> Date: Wed, 22 Nov 2023 08:13:56 +0800 Subject: [PATCH 2/3] =?UTF-8?q?feat(entities.go,parser.go):=20=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E4=BA=86=E5=AF=B9form-data=E7=9A=84=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1.在swaggerOperationObject中添加Consumes参数 2.对请求的tag类型进行判断,添加对应的请求体类型。 --- generate/entities.go | 6 +++--- generate/parser.go | 17 +++++++++++++++++ 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/generate/entities.go b/generate/entities.go index 0abebe7..65a207d 100644 --- a/generate/entities.go +++ b/generate/entities.go @@ -137,9 +137,9 @@ type swaggerOperationObject struct { RequestBody *struct { Content swaggerContentObject `json:"content,omitempty"` } `json:"requestBody,omitempty"` - Tags []string `json:"tags,omitempty"` - Deprecated bool `json:"deprecated,omitempty"` - + Tags []string `json:"tags,omitempty"` + Deprecated bool `json:"deprecated,omitempty"` + Consumes string `json:"consumes,omitempty"` Security *[]swaggerSecurityRequirementObject `json:"security,omitempty"` ExternalDocs *swaggerExternalDocumentationObject `json:"externalDocs,omitempty"` } diff --git a/generate/parser.go b/generate/parser.go index 123b469..2787e60 100644 --- a/generate/parser.go +++ b/generate/parser.go @@ -242,6 +242,14 @@ func renderServiceRoutes(service spec.Service, groups []spec.Group, paths swagge Required: true, Schema: &schema, } + + for _, member := range defineStruct.Members { + if strings.Contains(member.Tag, "form") { + parameter.In = "formData" + break + } + } + doc := strings.Join(route.RequestType.Documents(), ",") doc = strings.Replace(doc, "//", "", -1) @@ -296,6 +304,15 @@ func renderServiceRoutes(service spec.Service, groups []spec.Group, paths swagge }, } + if defineStruct, ok := route.RequestType.(spec.DefineStruct); ok { + for _, member := range defineStruct.Members { + if strings.Contains(member.Tag, "form") { + operationObject.Consumes = "multipart/form-data" + break + } + } + } + for _, v := range route.Doc { markerIndex := strings.Index(v, atRespDoc) if markerIndex >= 0 { From 731b0059bcd3a47b3d0365f3a377a2a56dbd1580 Mon Sep 17 00:00:00 2001 From: Lansong <2095621390@qq.com> Date: Wed, 22 Nov 2023 08:13:56 +0800 Subject: [PATCH 3/3] =?UTF-8?q?feat(entities.go,parser.go):=20=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E4=BA=86=E5=AF=B9form-data=E7=9A=84=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1.在swaggerOperationObject中添加Consumes参数 2.对请求的tag类型进行判断,添加对应的请求体类型。 --- generate/entities.go | 6 +++--- generate/parser.go | 17 +++++++++++++++++ 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/generate/entities.go b/generate/entities.go index 0abebe7..f322ada 100644 --- a/generate/entities.go +++ b/generate/entities.go @@ -137,9 +137,9 @@ type swaggerOperationObject struct { RequestBody *struct { Content swaggerContentObject `json:"content,omitempty"` } `json:"requestBody,omitempty"` - Tags []string `json:"tags,omitempty"` - Deprecated bool `json:"deprecated,omitempty"` - + Tags []string `json:"tags,omitempty"` + Deprecated bool `json:"deprecated,omitempty"` + Consumes []string `json:"consumes,omitempty"` Security *[]swaggerSecurityRequirementObject `json:"security,omitempty"` ExternalDocs *swaggerExternalDocumentationObject `json:"externalDocs,omitempty"` } diff --git a/generate/parser.go b/generate/parser.go index 123b469..b89de7e 100644 --- a/generate/parser.go +++ b/generate/parser.go @@ -242,6 +242,14 @@ func renderServiceRoutes(service spec.Service, groups []spec.Group, paths swagge Required: true, Schema: &schema, } + + for _, member := range defineStruct.Members { + if strings.Contains(member.Tag, "form") { + parameter.In = "formData" + break + } + } + doc := strings.Join(route.RequestType.Documents(), ",") doc = strings.Replace(doc, "//", "", -1) @@ -296,6 +304,15 @@ func renderServiceRoutes(service spec.Service, groups []spec.Group, paths swagge }, } + if defineStruct, ok := route.RequestType.(spec.DefineStruct); ok { + for _, member := range defineStruct.Members { + if strings.Contains(member.Tag, "form") { + operationObject.Consumes = []string{"multipart/form-data"} + break + } + } + } + for _, v := range route.Doc { markerIndex := strings.Index(v, atRespDoc) if markerIndex >= 0 {