From 8bc001fc79fc75b1c74dcb233a5a16859e599608 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E8=8C=B6=E6=B8=85=E6=AC=A2?= Date: Tue, 23 Apr 2024 12:17:46 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9F=BA=E7=A1=80=E7=AE=80=E7=89=88swagger?= =?UTF-8?q?=E6=96=87=E6=A1=A3=E7=94=9F=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- define/types.go | 8 ++++---- swagger/run.go | 27 +++++++++++++-------------- 2 files changed, 17 insertions(+), 18 deletions(-) diff --git a/define/types.go b/define/types.go index f84a3a5..ba7e191 100644 --- a/define/types.go +++ b/define/types.go @@ -61,7 +61,7 @@ type SwaggerPathConfig struct { // // Date : 16:53 2024/4/19 type SwaggerPathConfigParameter struct { - Type string `json:"type"` // 类型 + Type string `json:"type,omitempty"` // 类型 Description string `json:"description"` // 描述 Name string `json:"name"` // 参数名称 In string `json:"in"` // 参数位置 @@ -86,9 +86,9 @@ type SwaggerPathConfigResponse struct { // // Date : 17:01 2024/4/19 type SwaggerDefinition struct { - Type string `json:"type"` // 类型 - Required []string `json:"required"` // 必传参数列表 - Properties map[string]*SwaggerDefinitionProperty `json:"properties"` // 参数名 => 参数配置 + Type string `json:"type"` // 类型 + Required []string `json:"required,omitempty"` // 必传参数列表 + Properties map[string]*SwaggerDefinitionProperty `json:"properties"` // 参数名 => 参数配置 } // SwaggerDefinitionProperty ... diff --git a/swagger/run.go b/swagger/run.go index 10c1918..342e570 100644 --- a/swagger/run.go +++ b/swagger/run.go @@ -121,7 +121,7 @@ func generatePathConfig(swaggerInfo *define.Swagger, docConfig *define.SwaggerIn func generatePathParameterConfig(swaggerInfo *define.Swagger, pathConfig *define.SwaggerPathInput) { swaggerInfo.Paths[pathConfig.Uri][pathConfig.Method].Parameters = make([]*define.SwaggerPathConfigParameter, 0) hasDealTable := map[string]bool{} - // hasDealResponseTable := map[string]bool{} + hasDealResponseTable := map[string]bool{} for _, itemParamInput := range pathConfig.ParameterList { if len(itemParamInput.Name) == 0 { @@ -140,8 +140,8 @@ func generatePathParameterConfig(swaggerInfo *define.Swagger, pathConfig *define if _, exist := hasDealTable[namePath[0]]; !exist { hasDealTable[namePath[0]] = true generateParam := &define.SwaggerPathConfigParameter{ - Type: wrapper.TernaryOperator.String(realParamName == "jsonBody", "object", wrapper.String(itemParamInput.Type)).Value(), - Description: wrapper.TernaryOperator.String(realParamName == "jsonBody", "object", wrapper.String(itemParamInput.Description)).Value(), + Type: wrapper.TernaryOperator.String(realParamName == "jsonBody", "", wrapper.String(itemParamInput.Type)).Value(), + Description: wrapper.TernaryOperator.String(realParamName == "jsonBody", "参数结构", wrapper.String(itemParamInput.Description)).Value(), Name: realParamName, In: itemParamInput.In, Required: itemParamInput.Required, @@ -154,28 +154,27 @@ func generatePathParameterConfig(swaggerInfo *define.Swagger, pathConfig *define } } - /*for _, itemResponseConfig := range pathConfig.ResponseList { + for _, itemResponseConfig := range pathConfig.ResponseList { for _, itemResponseInput := range itemResponseConfig.List { if len(itemResponseInput.Field) == 0 { // 未指定参数名, 忽略 continue } // name 可能是 x.x.x 递归数组, 或者 x.x.[].x - outputDefine := pathConfig.Uri + "." + itemResponseConfig.Code + ".output" + outputDefine := strings.TrimLeft(pathConfig.Uri, "/") + "." + itemResponseConfig.Code + ".output" generateResponseDefinitions(swaggerInfo, pathConfig.Uri, outputDefine, itemResponseInput.Field, itemResponseInput) namePath := strings.Split(itemResponseInput.Field, ".") if _, exist := hasDealResponseTable[namePath[0]]; !exist { hasDealResponseTable[namePath[0]] = true swaggerInfo.Paths[pathConfig.Uri][pathConfig.Method].Responses[itemResponseConfig.Code] = &define.SwaggerPathConfigResponse{ - Description: itemResponseInput.Description, + Description: "返回数据", Schema: map[string]string{ - "$ref": "#/definitions" + outputDefine, + "$ref": "#/definitions/" + outputDefine, }, } } } - - }*/ + } } // generateParameterDefinitions 生成请求参数的描述 @@ -258,11 +257,11 @@ func generateResponseDefinitions(swaggerInfo *define.Swagger, uri string, parent if len(parentPath) == 0 { return } - swaggerInfo.Definitions[parentPath].Type = responseConfig.Type - /*swaggerInfo.Definitions[parentPath].Properties[paramConfig.Name] = &define.SwaggerDefinitionProperty{ - Description: paramConfig.Description, - Type: paramConfig.Type, - }*/ + // swaggerInfo.Definitions[parentPath].Type = responseConfig.Type + swaggerInfo.Definitions[parentPath].Properties[responseConfig.Field] = &define.SwaggerDefinitionProperty{ + Description: responseConfig.Description, + Type: responseConfig.Type, + } return } if len(parentPath) == 0 {