增加全局安全类参数解析

This commit is contained in:
白茶清欢 2024-12-25 14:59:14 +08:00
parent e70634a318
commit 368fb02efc
4 changed files with 40 additions and 17 deletions

View File

@ -57,7 +57,7 @@ func GetDataType(docParamType string, formatType string) consts.DataType {
return consts.DataTypeInt return consts.DataTypeInt
} }
return consts.DataTypeUint return consts.DataTypeUint
case "string": case "string", "apikey":
return consts.DataTypeString return consts.DataTypeString
case "object": case "object":
return consts.DataTypeMapStrAny return consts.DataTypeMapStrAny

View File

@ -15,10 +15,11 @@ import "regexp"
// //
// Date : 10:30 2024/12/24 // Date : 10:30 2024/12/24
type DocParseResult struct { type DocParseResult struct {
Domain string `json:"domain"` // 域名 Domain string `json:"domain"` // 域名
Title string `json:"title"` // 标题 Title string `json:"title"` // 标题
Description string `json:"description"` // 描述 Description string `json:"description"` // 描述
UriList []*UriBaseConfig `json:"uri_list"` // 接口列表 UriList []*UriBaseConfig `json:"uri_list"` // 接口列表
GlobalSecurityParamList []*ParamConfig `json:"global_security_param_list"` // 全局安全类参数配置
} }
// UriBaseConfig 添加接口时的基础配置 // UriBaseConfig 添加接口时的基础配置

View File

@ -101,14 +101,15 @@ type SwaggerDefinitionPropertyItem struct {
// //
// Date : 16:12 2024/4/19 // Date : 16:12 2024/4/19
type Swagger struct { type Swagger struct {
Schemes []string `json:"schemes"` Schemes []string `json:"schemes"`
Swagger string `json:"swagger"` // swagger版本 - 2.0 Swagger string `json:"swagger"` // swagger版本 - 2.0
Host string `json:"host"` // 服务域名 Host string `json:"host"` // 服务域名
BasePath string `json:"basePath"` // 基础path BasePath string `json:"basePath"` // 基础path
Info Info `json:"info"` // 文档描述信息 Info Info `json:"info"` // 文档描述信息
Paths map[string]map[string]*SwaggerPathConfig `json:"paths"` // 接口列表 : 接口 => 请求方法 => 请求配置 Paths map[string]map[string]*SwaggerPathConfig `json:"paths"` // 接口列表 : 接口 => 请求方法 => 请求配置
Definitions map[string]*SwaggerDefinition `json:"definitions"` // 数据定义 Definitions map[string]*SwaggerDefinition `json:"definitions"` // 数据定义
Responses map[string]*SwaggerPathConfigResponse `json:"responses"` // 响应结构列表 Responses map[string]*SwaggerPathConfigResponse `json:"responses"` // 响应结构列表
SecurityDefinitions map[string]*SwaggerPathConfigParameter `json:"securityDefinitions"` // 安全选项
} }
// SwaggerInput ... // SwaggerInput ...

View File

@ -31,17 +31,38 @@ func ParseSwagger2(docContent []byte) (*define.DocParseResult, error) {
return nil, errors.New("parse swagger json fail : " + err.Error()) return nil, errors.New("parse swagger json fail : " + err.Error())
} }
docResult := &define.DocParseResult{ docResult := &define.DocParseResult{
Domain: swaggerDoc.Host, Domain: swaggerDoc.Host,
Title: swaggerDoc.Info.Title, Title: swaggerDoc.Info.Title,
Description: swaggerDoc.Info.Description, Description: swaggerDoc.Info.Description,
UriList: make([]*define.UriBaseConfig, 0), UriList: make([]*define.UriBaseConfig, 0),
GlobalSecurityParamList: make([]*define.ParamConfig, 0),
} }
if docResult.UriList, err = buildUriList(&swaggerDoc); nil != err { if docResult.UriList, err = buildUriList(&swaggerDoc); nil != err {
return nil, err return nil, err
} }
docResult.GlobalSecurityParamList = buildSwagger2GlobalSecurityParamList(&swaggerDoc)
return docResult, nil return docResult, nil
} }
// buildSwagger2GlobalSecurityParamList 构建全局安全类参数
func buildSwagger2GlobalSecurityParamList(swaggerDoc *define.Swagger) []*define.ParamConfig {
result := make([]*define.ParamConfig, 0)
for paramName, paramConfig := range swaggerDoc.SecurityDefinitions {
if len(paramConfig.In) == 0 {
continue
}
result = append(result, &define.ParamConfig{
Location: GetParamLocation(paramConfig.In).String(),
Path: paramName,
Type: GetDataType(paramConfig.Type, "").String(),
Title: paramName,
Description: paramConfig.Description,
Required: false,
})
}
return result
}
// 解析uri列表 // 解析uri列表
func buildUriList(swaggerDoc *define.Swagger) ([]*define.UriBaseConfig, error) { func buildUriList(swaggerDoc *define.Swagger) ([]*define.UriBaseConfig, error) {
uriList := make([]*define.UriBaseConfig, 0) uriList := make([]*define.UriBaseConfig, 0)