소스 검색

fix:duplicate route check (#2154)

Co-authored-by: 黄志荣 <huangzhirong@shuinfo.com>
fisnone 2 년 전
부모
커밋
685d14e662
1개의 변경된 파일10개의 추가작업 그리고 3개의 파일을 삭제
  1. 10 3
      tools/goctl/api/parser/g4/ast/apiparser.go

+ 10 - 3
tools/goctl/api/parser/g4/ast/apiparser.go

@@ -232,20 +232,27 @@ func (p *Parser) invoke(linePrefix, content string) (v *Api, err error) {
 
 // storeVerificationInfo stores information for verification
 func (p *Parser) storeVerificationInfo(api *Api) {
-	routeMap := func(list []*ServiceRoute) {
+	routeMap := func(list []*ServiceRoute, prefix string) {
 		for _, g := range list {
 			handler := g.GetHandler()
 			if handler.IsNotNil() {
 				handlerName := handler.Text()
 				p.handlerMap[handlerName] = Holder
-				route := fmt.Sprintf("%s://%s", g.Route.Method.Text(), g.Route.Path.Text())
+				route := fmt.Sprintf("%s://%s", g.Route.Method.Text(), path.Join(prefix, g.Route.Path.Text()))
 				p.routeMap[route] = Holder
 			}
 		}
 	}
 
 	for _, each := range api.Service {
-		routeMap(each.ServiceApi.ServiceRoute)
+		var prefix string
+		if each.AtServer != nil {
+			pExp := each.AtServer.Kv.Get(prefixKey)
+			if pExp != nil {
+				prefix = pExp.Text()
+			}
+		}
+		routeMap(each.ServiceApi.ServiceRoute, prefix)
 	}
 
 	for _, each := range api.Type {