From 7de0c874c63601b3cf83e44a102a9a7bc06fe434 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E8=8C=B6=E6=B8=85=E6=AC=A2?= Date: Wed, 7 Jan 2026 12:35:43 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=94=AF=E6=8C=81=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?=E5=85=AC=E5=85=B1=E7=9A=84=E8=AF=B7=E6=B1=82=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- openapi/generate.go | 6 ++++++ openapi/generate_test.go | 15 +++++++++++++++ openapi/option.go | 22 ++++++++++++++++++++++ 3 files changed, 43 insertions(+) diff --git a/openapi/generate.go b/openapi/generate.go index 50dc96e..e7a3f3c 100644 --- a/openapi/generate.go +++ b/openapi/generate.go @@ -296,6 +296,12 @@ func (g *Generate) initApiConfig(docFlag string, apiMeta define.UriConfig) (*ope } newOperate := openapi3.NewOperation() newOperate.Parameters = make(openapi3.Parameters, 0) + // 合入公共的 请求参数 + if nil != g.docTable[docFlag].Components.Parameters { + for _, v := range g.docTable[docFlag].Components.Parameters { + newOperate.Parameters = append(newOperate.Parameters, v) + } + } newOperate.Responses = openapi3.NewResponses() newOperate.Summary = apiMeta.Desc newOperate.Description = apiMeta.Desc diff --git a/openapi/generate_test.go b/openapi/generate_test.go index 42b746c..143efa3 100644 --- a/openapi/generate_test.go +++ b/openapi/generate_test.go @@ -53,6 +53,21 @@ func TestGenerate_AddApiDoc(t *testing.T) { In: strings.ToLower(consts.RequestDataLocationHeader.String()), }, }, + }), WithCommonParameter(&openapi3.ParametersMap{ + "Token": { + Value: &openapi3.Parameter{ + Name: "Token", + In: strings.ToLower(consts.RequestDataLocationHeader.String()), + Description: "用户登录 Token", + }, + }, + "User-Agent": { + Value: &openapi3.Parameter{ + Name: "User-Agent", + In: strings.ToLower(consts.RequestDataLocationHeader.String()), + Description: "用户访问 UA", + }, + }, })) DocManager.AddApiDoc(docFlag, define.UriConfig{ Path: "/a/b/c", diff --git a/openapi/option.go b/openapi/option.go index 918a208..76760a1 100644 --- a/openapi/option.go +++ b/openapi/option.go @@ -63,3 +63,25 @@ func WithSecurity(securityTable *openapi3.SecuritySchemes) OptionFunc { } } } + +// WithCommonParameter 设置公共请求蚕食 +func WithCommonParameter(commonParameterTable *openapi3.ParametersMap) OptionFunc { + return func(t *openapi3.T) { + if nil == commonParameterTable { + return + } + if nil == t.Components { + t.Components = &openapi3.Components{} + } + if nil == t.Components.Parameters { + t.Components.Parameters = make(map[string]*openapi3.ParameterRef) + } + // 不要直接复制, 逐个设置, 可以重复调用, 后面的会覆盖前面的 + for k, v := range *commonParameterTable { + if nil == v { + continue + } + t.Components.Parameters[k] = v + } + } +}