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 {