gitee.com/liuxuezhan/go-micro-v1.18.0@v1.0.0/api/resolver/micro/micro.go (about) 1 // Package micro provides a micro rpc resolver which prefixes a namespace 2 package micro 3 4 import ( 5 "net/http" 6 7 "gitee.com/liuxuezhan/go-micro-v1.18.0/api/resolver" 8 ) 9 10 // default resolver for legacy purposes 11 // it uses proxy routing to resolve names 12 // /foo becomes namespace.foo 13 // /v1/foo becomes namespace.v1.foo 14 type Resolver struct { 15 Options resolver.Options 16 } 17 18 func (r *Resolver) Resolve(req *http.Request) (*resolver.Endpoint, error) { 19 var name, method string 20 21 switch r.Options.Handler { 22 // internal handlers 23 case "meta", "api", "rpc", "micro": 24 name, method = apiRoute(req.URL.Path) 25 default: 26 method = req.Method 27 name = proxyRoute(req.URL.Path) 28 } 29 30 return &resolver.Endpoint{ 31 Name: name, 32 Method: method, 33 }, nil 34 } 35 36 func (r *Resolver) String() string { 37 return "micro" 38 } 39 40 // NewResolver creates a new micro resolver 41 func NewResolver(opts ...resolver.Option) resolver.Resolver { 42 return &Resolver{ 43 Options: resolver.NewOptions(opts...), 44 } 45 }