增加uri路径参数解析
This commit is contained in:
		
							
								
								
									
										39
									
								
								common.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								common.go
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,39 @@ | ||||
| // Package api_doc ... | ||||
| // | ||||
| // Description : api_doc ... | ||||
| // | ||||
| // Author : go_developer@163.com<白茶清欢> | ||||
| // | ||||
| // Date : 2024-12-24 10:52 | ||||
| package api_doc | ||||
|  | ||||
| import ( | ||||
| 	"git.zhangdeman.cn/gateway/api-doc/define" | ||||
| 	"git.zhangdeman.cn/zhangdeman/consts" | ||||
| 	"strings" | ||||
| ) | ||||
|  | ||||
| // GetUriPathParamList 获取uri参数列表 | ||||
| // | ||||
| // Author : go_developer@163.com<白茶清欢> | ||||
| // | ||||
| // Date : 10:52 2024/12/24 | ||||
| func GetUriPathParamList(uriPath string) []*define.ParamConfig { | ||||
| 	var ( | ||||
| 		paramList []string | ||||
| 		result    = make([]*define.ParamConfig, 0) | ||||
| 	) | ||||
| 	if paramList = define.UriParamRegexp.FindAllString(uriPath, -1); len(paramList) == 0 { | ||||
| 		return result | ||||
| 	} | ||||
| 	for _, param := range paramList { | ||||
| 		result = append(result, &define.ParamConfig{ | ||||
| 			Location:    consts.RequestDataLocationUriPath.String(), | ||||
| 			Path:        strings.TrimRight(strings.TrimLeft(param, "{"), "}"), | ||||
| 			Type:        consts.DataTypeString.String(), | ||||
| 			Title:       param, | ||||
| 			Description: param, | ||||
| 		}) | ||||
| 	} | ||||
| 	return result | ||||
| } | ||||
| @ -7,15 +7,18 @@ | ||||
| // Date : 2024-08-14 15:20 | ||||
| package define | ||||
|  | ||||
| import "regexp" | ||||
|  | ||||
| // DocParseResult 文档解析结果 | ||||
| // | ||||
| // Author : go_developer@163.com<白茶清欢> | ||||
| // | ||||
| // Date : 10:30 2024/12/24 | ||||
| type DocParseResult struct { | ||||
| 	Domain      string   `json:"domain"`      // 域名 | ||||
| 	Description string   `json:"description"` // 描述 | ||||
| 	UriList     []string `json:"uri_list"`    // 接口列表 | ||||
| 	Domain      string           `json:"domain"`      // 域名 | ||||
| 	Title       string           `json:"title"`       // 标题 | ||||
| 	Description string           `json:"description"` // 描述 | ||||
| 	UriList     []*UriBaseConfig `json:"uri_list"`    // 接口列表 | ||||
| } | ||||
|  | ||||
| // UriBaseConfig 添加接口时的基础配置 | ||||
| @ -59,3 +62,7 @@ type ResultConfig struct { | ||||
| 	Title       string `json:"title"`       // 返回值标题 | ||||
| 	Description string `json:"description"` // 返回值描述 | ||||
| } | ||||
|  | ||||
| var ( | ||||
| 	UriParamRegexp = regexp.MustCompile("({.*?})") // uri路径中参数提取的正则表达式 | ||||
| ) | ||||
|  | ||||
							
								
								
									
										18
									
								
								parser.go
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								parser.go
									
									
									
									
									
								
							| @ -8,7 +8,6 @@ | ||||
| package api_doc | ||||
|  | ||||
| import ( | ||||
| 	"errors" | ||||
| 	"git.zhangdeman.cn/gateway/api-doc/define" | ||||
| 	"git.zhangdeman.cn/zhangdeman/serialize" | ||||
| 	"github.com/tidwall/gjson" | ||||
| @ -37,23 +36,6 @@ func Parse(docUrl string) (*define.DocParseResult, error) { | ||||
| 	return ParseSwagger2(docContent) | ||||
| } | ||||
|  | ||||
| // ParseSwagger2 解析swagger2.0版本文档 | ||||
| // | ||||
| // Author : go_developer@163.com<白茶清欢> | ||||
| // | ||||
| // Date : 10:33 2024/12/24 | ||||
| func ParseSwagger2(docContent []byte) (*define.DocParseResult, error) { | ||||
| 	var ( | ||||
| 		err        error | ||||
| 		swaggerDoc define.Swagger | ||||
| 	) | ||||
|  | ||||
| 	if err = serialize.JSON.UnmarshalWithNumber(docContent, &swaggerDoc); nil != err { | ||||
| 		return nil, errors.New("parse swagger json fail : " + err.Error()) | ||||
| 	} | ||||
| 	return nil, nil | ||||
| } | ||||
|  | ||||
| func ParseOpenapi3(docContent []byte) (*define.DocParseResult, error) { | ||||
| 	return nil, nil | ||||
| } | ||||
|  | ||||
							
								
								
									
										51
									
								
								swagger.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								swagger.go
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,51 @@ | ||||
| // Package api_doc ... | ||||
| // | ||||
| // Description : api_doc ... | ||||
| // | ||||
| // Author : go_developer@163.com<白茶清欢> | ||||
| // | ||||
| // Date : 2024-12-24 10:34 | ||||
| package api_doc | ||||
|  | ||||
| import ( | ||||
| 	"errors" | ||||
| 	"fmt" | ||||
| 	"git.zhangdeman.cn/gateway/api-doc/define" | ||||
| 	"git.zhangdeman.cn/zhangdeman/serialize" | ||||
| ) | ||||
|  | ||||
| // ParseSwagger2 解析swagger2.0版本文档 | ||||
| // | ||||
| // Author : go_developer@163.com<白茶清欢> | ||||
| // | ||||
| // Date : 10:33 2024/12/24 | ||||
| func ParseSwagger2(docContent []byte) (*define.DocParseResult, error) { | ||||
| 	var ( | ||||
| 		err        error | ||||
| 		swaggerDoc define.Swagger | ||||
| 	) | ||||
|  | ||||
| 	if err = serialize.JSON.UnmarshalWithNumber(docContent, &swaggerDoc); nil != err { | ||||
| 		return nil, errors.New("parse swagger json fail : " + err.Error()) | ||||
| 	} | ||||
| 	docResult := &define.DocParseResult{ | ||||
| 		Domain:      swaggerDoc.Host, | ||||
| 		Title:       swaggerDoc.Info.Title, | ||||
| 		Description: swaggerDoc.Info.Description, | ||||
| 		UriList:     make([]*define.UriBaseConfig, 0), | ||||
| 	} | ||||
| 	if docResult.UriList, err = buildUriList(&swaggerDoc); nil != err { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	return docResult, nil | ||||
| } | ||||
|  | ||||
| // 解析uri列表 | ||||
| func buildUriList(swaggerDoc *define.Swagger) ([]*define.UriBaseConfig, error) { | ||||
| 	uriList := make([]*define.UriBaseConfig, 0) | ||||
| 	for itemUri, itemUriMethodConfig := range swaggerDoc.Paths { | ||||
| 		GetUriPathParamList(itemUri) | ||||
| 		fmt.Println(itemUriMethodConfig) | ||||
| 	} | ||||
| 	return uriList, nil | ||||
| } | ||||
		Reference in New Issue
	
	Block a user