// Package openapi ... // // Description : openapi ... // // Author : go_developer@163.com<白茶清欢> // // Date : 2026-01-06 22:48 package openapi import ( "sort" "github.com/getkin/kin-openapi/openapi3" ) // OptionFunc 设置文档选项 type OptionFunc func(t *openapi3.T) // WithServers 设置文档服务器 func WithServers(serverList openapi3.Servers) OptionFunc { return func(t *openapi3.T) { if len(serverList) == 0 { return } t.Servers = serverList } } // WithInfo 文档基础信息 func WithInfo(info *openapi3.Info) OptionFunc { return func(t *openapi3.T) { if nil == info { return } t.Info = info } } // WithSecurity 设置安全策略 func WithSecurity(securityTable *openapi3.SecuritySchemes) OptionFunc { return func(t *openapi3.T) { if nil == securityTable { return } if nil == t.Components { t.Components = &openapi3.Components{} } if nil == t.Components.SecuritySchemes { t.Components.SecuritySchemes = make(map[string]*openapi3.SecuritySchemeRef) } if nil == t.Security { t.Security = make([]openapi3.SecurityRequirement, 0) } keyList := make([]string, 0) for k, v := range *securityTable { keyList = append(keyList, k) t.Components.SecuritySchemes[k] = v } // 保证生成结果有序 sort.Strings(keyList) for _, k := range keyList { t.Security = append(t.Security, map[string][]string{k: {}}) } } } // 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 } } }