diff --git a/plugins/client/http/go.sum b/plugins/client/http/go.sum index 277277b5..dadc759d 100644 --- a/plugins/client/http/go.sum +++ b/plugins/client/http/go.sum @@ -56,6 +56,8 @@ github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= github.com/asim/go-micro v1.18.0 h1:k/qyLA5R175Vr1Owf90Ms1+J/zhBf/aa8aiHGhk0x5s= +github.com/asim/go-micro/plugins/registry/memory/v3 v3.0.0-20210202145831-070250155285 h1:zgDzypD412DKHoXIXW1JwIOWoGcjxzI1iF6JmwtyqHw= +github.com/asim/go-micro/plugins/registry/memory/v3 v3.0.0-20210202145831-070250155285/go.mod h1:AU0vyZvsO1lpuQr/DUG4CnNRvITXqQcJRRAzBATR6Jo= github.com/asim/go-micro/v3 v2.9.1 h1:+S9koIrNWARjpP6k2TZ7kt0uC9zUJtNXzIdZTZRms7Q= github.com/asim/go-micro/v3 v2.9.1/go.mod h1:x55ZM3Puy0FyvvkR3e0ha0xsE9DFwfPSUMWAIbFY0SY= github.com/asim/go-micro/v3 v3.0.0-20210120135431-d94936f6c97c h1:pxZggDV2VJ7aTR7/7xzAJOGam0y8zzrtBgmop1pHAyA= diff --git a/plugins/client/http/http.go b/plugins/client/http/http.go index 74e4fc03..f0ed9333 100644 --- a/plugins/client/http/http.go +++ b/plugins/client/http/http.go @@ -11,18 +11,19 @@ import ( "net/http" "net/url" "os" + "strings" "sync" "time" "github.com/asim/go-micro/v3/broker" "github.com/asim/go-micro/v3/client" - "github.com/asim/go-micro/v3/selector" + "github.com/asim/go-micro/v3/cmd" "github.com/asim/go-micro/v3/codec" raw "github.com/asim/go-micro/v3/codec/bytes" - "github.com/asim/go-micro/v3/cmd" errors "github.com/asim/go-micro/v3/errors" "github.com/asim/go-micro/v3/metadata" "github.com/asim/go-micro/v3/registry" + "github.com/asim/go-micro/v3/selector" "github.com/asim/go-micro/v3/transport" ) @@ -106,13 +107,22 @@ func (h *httpClient) call(ctx context.Context, node *registry.Node, req client.R buf := &buffer{bytes.NewBuffer(b)} defer buf.Close() + // start with / or not + endpoint := req.Endpoint() + if !strings.HasPrefix(endpoint, "/") { + endpoint = "/" + endpoint + } + rawurl := "http://" + address + endpoint + + // parse rawurl + URL, err := url.Parse(rawurl) + if err != nil { + return errors.InternalServerError("go.micro.client", err.Error()) + } + hreq := &http.Request{ - Method: "POST", - URL: &url.URL{ - Scheme: "http", - Host: address, - Path: req.Endpoint(), - }, + Method: "POST", + URL: URL, Header: header, Body: buf, ContentLength: int64(len(b)), diff --git a/plugins/client/http/http_test.go b/plugins/client/http/http_test.go index 7e166738..eb919807 100644 --- a/plugins/client/http/http_test.go +++ b/plugins/client/http/http_test.go @@ -10,11 +10,11 @@ import ( "net/http" "testing" - "github.com/asim/go-micro/v3/client" - "github.com/asim/go-micro/v3/selector" - "github.com/asim/go-micro/v3/registry" - "github.com/asim/go-micro/plugins/registry/memory/v3" "github.com/asim/go-micro/plugins/client/http/v3/test" + "github.com/asim/go-micro/plugins/registry/memory/v3" + "github.com/asim/go-micro/v3/client" + "github.com/asim/go-micro/v3/registry" + "github.com/asim/go-micro/v3/selector" ) func TestHTTPClient(t *testing.T) { @@ -89,7 +89,11 @@ func TestHTTPClient(t *testing.T) { Seq: int64(i), Data: fmt.Sprintf("message %d", i), } - req := c.NewRequest("test.service", "/foo/bar", msg) + endpoint := "/foo/bar" + if i%2 == 0 { + endpoint = endpoint + "?pageNum=1&pageSize=2" + } + req := c.NewRequest("test.service", endpoint, msg) rsp := new(test.Message) err := c.Call(context.TODO(), req, rsp) if err != nil {