From e044ff3e59eeba427fc619118317af3c84d185a7 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, 24 Dec 2024 14:34:19 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=8E=B7=E5=8F=96=E7=9C=9F?= =?UTF-8?q?=E5=AE=9Edefinitions=20key=E6=96=B9=E6=B3=95,=20=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E5=8F=82=E6=95=B0=E9=85=8D=E7=BD=AE=E6=9E=84=E5=BB=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common.go | 5 +++++ swagger.go | 42 ++++++++++++++++++++++++++++++++---------- 2 files changed, 37 insertions(+), 10 deletions(-) diff --git a/common.go b/common.go index 497c02d..ddd2043 100644 --- a/common.go +++ b/common.go @@ -85,3 +85,8 @@ func GetParamLocation(docParamLocation string) consts.RequestDataLocation { return consts.RequestDataLocationQuery } } + +// GetRealDefinitionsKey 统统schema下的 $ref 获取真实的 definitions key +func GetRealDefinitionsKey(ref string) string { + return strings.TrimPrefix(ref, "#/definitions/") +} diff --git a/swagger.go b/swagger.go index 325b499..897baa9 100644 --- a/swagger.go +++ b/swagger.go @@ -95,17 +95,39 @@ func buildSwagger2ParamConfig(swaggerDoc *define.Swagger, paramConfigList []*def res := make([]*define.ParamConfig, 0) // 解析参数 for _, paramConfig := range paramConfigList { - paramConfigBuildConfig := &define.ParamConfig{ - Location: GetParamLocation(paramConfig.In).String(), - Path: paramConfig.Name, - Type: GetParamType(paramConfig.Type, paramConfig.Format).String(), - Title: paramConfig.Name, - Description: paramConfig.Description, - Required: paramConfig.Required, + if paramConfig.Name != "body" { + paramConfigBuildConfig := &define.ParamConfig{ + Location: GetParamLocation(paramConfig.In).String(), + Path: paramConfig.Name, + Type: GetParamType(paramConfig.Type, paramConfig.Format).String(), + Title: paramConfig.Name, + Description: paramConfig.Description, + Required: paramConfig.Required, + } + res = append(res, paramConfigBuildConfig) } - res = append(res, paramConfigBuildConfig) - if nil != paramConfig.Schema && len(paramConfig.Schema.Ref) > 0 { - // TODO : 可以继续展开 + + if nil == paramConfig.Schema || len(paramConfig.Schema.Ref) == 0 { + continue + } + // 可以继续展开 + requiredTable := make(map[string]bool) + for _, paramName := range swaggerDoc.Definitions[GetRealDefinitionsKey(paramConfig.Schema.Ref)].Required { + requiredTable[paramName] = true + } + for paramName, paramMoreConfig := range swaggerDoc.Definitions[GetRealDefinitionsKey(paramConfig.Schema.Ref)].Properties { + if paramConfig.Name != "body" { + paramName = paramConfig.Name + "." + paramName + } + paramConfigBuildConfig := &define.ParamConfig{ + Location: GetParamLocation(paramConfig.In).String(), + Path: paramName, + Type: GetParamType(paramMoreConfig.Type, "").String(), + Title: paramMoreConfig.Description, + Description: paramMoreConfig.Description, + Required: requiredTable[paramName], + } + res = append(res, paramConfigBuildConfig) } }