swagger2版本文档解析1.0版本 #2
@ -33,7 +33,7 @@ func GetUriPathParamList(uriPath string) []*define.ParamConfig {
|
||||
Type: consts.DataTypeString.String(),
|
||||
Title: param,
|
||||
Description: param,
|
||||
IsRequired: true,
|
||||
Required: true,
|
||||
})
|
||||
}
|
||||
return result
|
||||
@ -59,7 +59,7 @@ func GetParamType(docParamType string, formatType string) consts.DataType {
|
||||
case "string":
|
||||
return consts.DataTypeString
|
||||
default:
|
||||
return consts.DataTypeAny
|
||||
return consts.DataTypeMapStrAny
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -49,7 +49,7 @@ type ParamConfig struct {
|
||||
Type string `json:"type"` // 参数类型
|
||||
Title string `json:"title"` // 参数标题
|
||||
Description string `json:"description"` // 参数描述
|
||||
IsRequired bool `json:"is_required"` // 是否必传
|
||||
Required bool `json:"required"` // 是否必传
|
||||
}
|
||||
|
||||
// ResultConfig 返回值配置
|
||||
|
@ -30,12 +30,17 @@ type SwaggerPathConfig struct {
|
||||
// Date : 16:53 2024/4/19
|
||||
type SwaggerPathConfigParameter struct {
|
||||
Type string `json:"type,omitempty"` // 类型
|
||||
Format string `json:"format"` // 格式化类型
|
||||
Description string `json:"description"` // 描述
|
||||
Name string `json:"name"` // 参数名称
|
||||
In string `json:"in"` // 参数位置
|
||||
Required bool `json:"required"` // 是否必传
|
||||
EnumList []interface{} `json:"enum_list,omitempty"` // 枚举值列表
|
||||
Schema map[string]string `json:"schema"` // 参数schema
|
||||
EnumList []any `json:"enum_list,omitempty"` // 枚举值列表
|
||||
Schema *SwaggerPathConfigParameterScheme `json:"schema"` // 参数schema
|
||||
}
|
||||
|
||||
type SwaggerPathConfigParameterScheme struct {
|
||||
Ref string `json:"$ref"` // 引用的数据结构定义
|
||||
}
|
||||
|
||||
// SwaggerPathConfigResponse ...
|
||||
|
52
swagger.go
52
swagger.go
@ -47,6 +47,26 @@ func buildUriList(swaggerDoc *define.Swagger) ([]*define.UriBaseConfig, error) {
|
||||
uriList := make([]*define.UriBaseConfig, 0)
|
||||
for itemUri, itemUriMethodConfig := range swaggerDoc.Paths {
|
||||
for requestMethod, methodConfig := range itemUriMethodConfig {
|
||||
initSwagger2UriMethodConfig(requestMethod, methodConfig)
|
||||
uriResult := &define.UriBaseConfig{
|
||||
Uri: swaggerDoc.BasePath + "/" + strings.TrimLeft(itemUri, "/"),
|
||||
Method: strings.ToUpper(requestMethod),
|
||||
ContentType: methodConfig.Consumes[0],
|
||||
OutputContentType: methodConfig.Produces[0],
|
||||
TagList: methodConfig.Tags,
|
||||
Summary: methodConfig.Summary,
|
||||
Description: methodConfig.Description,
|
||||
ParamList: buildSwagger2ParamConfig(swaggerDoc, methodConfig.Parameters),
|
||||
ResultList: nil,
|
||||
}
|
||||
uriList = append(uriList, uriResult)
|
||||
}
|
||||
}
|
||||
return uriList, nil
|
||||
}
|
||||
|
||||
// 初始化配置请求方法 返回类型
|
||||
func initSwagger2UriMethodConfig(requestMethod string, methodConfig *define.SwaggerPathConfig) {
|
||||
if len(methodConfig.Consumes) == 0 {
|
||||
// 未配置请求方法, 写请求 json , 读请求 form
|
||||
if strings.ToUpper(requestMethod) == http.MethodPost ||
|
||||
@ -68,20 +88,26 @@ func buildUriList(swaggerDoc *define.Swagger) ([]*define.UriBaseConfig, error) {
|
||||
consts.MimeTypeJson,
|
||||
}
|
||||
}
|
||||
uriResult := &define.UriBaseConfig{
|
||||
Uri: swaggerDoc.BasePath + "/" + strings.TrimLeft(itemUri, "/"),
|
||||
Method: strings.ToUpper(requestMethod),
|
||||
ContentType: methodConfig.Consumes[0],
|
||||
OutputContentType: methodConfig.Produces[0],
|
||||
TagList: methodConfig.Tags,
|
||||
Summary: methodConfig.Summary,
|
||||
Description: methodConfig.Description,
|
||||
ParamList: make([]*define.ParamConfig, 0),
|
||||
ResultList: nil,
|
||||
}
|
||||
// 解析query/body/header参数
|
||||
uriList = append(uriList, uriResult)
|
||||
|
||||
// buildSwagger2ParamConfig 构建请求参数配置
|
||||
func buildSwagger2ParamConfig(swaggerDoc *define.Swagger, paramConfigList []*define.SwaggerPathConfigParameter) []*define.ParamConfig {
|
||||
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,
|
||||
}
|
||||
res = append(res, paramConfigBuildConfig)
|
||||
if nil != paramConfig.Schema && len(paramConfig.Schema.Ref) > 0 {
|
||||
// TODO : 可以继续展开
|
||||
}
|
||||
}
|
||||
return uriList, nil
|
||||
|
||||
return res
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user