From 29d6aecb338daeb690384ca630b960a1e3ef9900 Mon Sep 17 00:00:00 2001 From: MaxToby <75149431+MaxToby@users.noreply.github.com> Date: Wed, 13 Oct 2021 13:29:36 +0800 Subject: [PATCH] Update parser.go Support interface type --- generate/parser.go | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/generate/parser.go b/generate/parser.go index 15849ab..cf9f3ea 100644 --- a/generate/parser.go +++ b/generate/parser.go @@ -58,9 +58,9 @@ func applyGenerate(p *plugin2.Plugin, host string, basePath string) (*swaggerObj newSecDefValue.Type = "apiKey" newSecDefValue.In = "header" s.SecurityDefinitions["apiKey"] = newSecDefValue + s.Security = append(s.Security, swaggerSecurityRequirementObject{"apiKey": []string{}}) - requestResponseRefs := refMap{} renderServiceRoutes(p.Api.Service, p.Api.Service.Groups, s.Paths, requestResponseRefs) m := messageMap{} @@ -98,6 +98,7 @@ func renderServiceRoutes(service spec.Service, groups []spec.Group, paths swagge continue } tempKind := swaggerMapTypes[strings.Replace(member.Type.Name(), "[]", "", -1)] + ftype, format, ok := primitiveSchema(tempKind, member.Type.Name()) if !ok { ftype = tempKind.String() @@ -163,9 +164,11 @@ func renderServiceRoutes(service spec.Service, groups []spec.Group, paths swagge if value := group.GetAnnotation("group"); len(value) > 0 { tags = value } + if value := group.GetAnnotation("swtags"); len(value) > 0 { tags = value } + operationObject := &swaggerOperationObject{ Tags: []string{tags}, Parameters: parameters, @@ -263,7 +266,7 @@ func schemaOfField(member spec.Member) swaggerSchemaObject { ret := swaggerSchemaObject{} var core schemaCore - // spew.Dump(member) + kind := swaggerMapTypes[member.Type.Name()] var props *swaggerSchemaObjectProperties @@ -277,8 +280,18 @@ func schemaOfField(member spec.Member) swaggerSchemaObject { refTypeName := strings.Replace(member.Type.Name(), "[", "", 1) refTypeName = strings.Replace(refTypeName, "]", "", 1) refTypeName = strings.Replace(refTypeName, "*", "", 1) - core = schemaCore{ - Ref: "#/definitions/" + refTypeName, + refTypeName = strings.Replace(refTypeName, "{", "", 1) + refTypeName = strings.Replace(refTypeName, "}", "", 1) + // interface + + if refTypeName == "interface" { + core = schemaCore{Type: "object"} + } else if refTypeName == "mapstringstring" { + core = schemaCore{Type: "object"} + } else { + core = schemaCore{ + Ref: "#/definitions/" + refTypeName, + } } case reflect.Slice: tempKind := swaggerMapTypes[strings.Replace(member.Type.Name(), "[]", "", -1)] @@ -321,6 +334,9 @@ func schemaOfField(member spec.Member) swaggerSchemaObject { Properties: props, } } + if strings.HasPrefix(member.Type.Name(), "map") { + fmt.Println("暂不支持map类型") + } default: ret = swaggerSchemaObject{ schemaCore: core,