1
0
mirror of https://github.com/go-micro/go-micro.git synced 2025-07-06 22:35:51 +02:00
Files
agent
api
handler
internal
proto
resolver
grpc
host
micro
micro.go
route.go
route_test.go
path
vpath
options.go
resolver.go
router
server
README.md
api.go
api_test.go
broker
client
cmd
codec
config
data
errors
metadata
options
proxy
registry
runtime
selector
server
service
sync
transport
util
web
.gitignore
.travis.yml
LICENSE
README.md
README.zh-cn.md
function.go
function_test.go
go.mod
go.sum
micro.go
options.go
publisher.go
service.go
service_test.go
wrapper.go
wrapper_test.go
go-micro/api/resolver/micro/micro.go

46 lines
955 B
Go
Raw Normal View History

2019-06-03 18:44:43 +01:00
// Package micro provides a micro rpc resolver which prefixes a namespace
package micro
import (
"net/http"
"github.com/micro/go-micro/api/resolver"
)
// default resolver for legacy purposes
// it uses proxy routing to resolve names
// /foo becomes namespace.foo
// /v1/foo becomes namespace.v1.foo
type Resolver struct {
Options resolver.Options
}
func (r *Resolver) Resolve(req *http.Request) (*resolver.Endpoint, error) {
var name, method string
switch r.Options.Handler {
// internal handlers
case "meta", "api", "rpc", "micro":
name, method = apiRoute(req.URL.Path)
default:
method = req.Method
name = proxyRoute(req.URL.Path)
}
return &resolver.Endpoint{
Name: name,
Method: method,
}, nil
}
func (r *Resolver) String() string {
return "micro"
}
// NewResolver creates a new micro resolver
func NewResolver(opts ...resolver.Option) resolver.Resolver {
return &Resolver{
Options: resolver.NewOptions(opts...),
}
}