From 85cf662c6fe5789f522f8c7d43436cf9ddd6c89d Mon Sep 17 00:00:00 2001 From: Kevin Wan Date: Sun, 13 Mar 2022 14:49:14 +0800 Subject: [PATCH] feat: add httpc/Get httpc/Post (#1640) --- rest/httpc/requests.go | 21 +++++++++++++++++++++ rest/httpc/requests_test.go | 12 ++++++------ 2 files changed, 27 insertions(+), 6 deletions(-) diff --git a/rest/httpc/requests.go b/rest/httpc/requests.go index 05460745..a01aaaf4 100644 --- a/rest/httpc/requests.go +++ b/rest/httpc/requests.go @@ -1,6 +1,7 @@ package httpc import ( + "io" "net/http" "github.com/zeromicro/go-zero/core/breaker" @@ -36,6 +37,26 @@ func Do(key string, r *http.Request, opts ...Option) (resp *http.Response, err e return } +// Get sends an HTTP GET request to the service assocated with the given key. +func Get(key, url string, opts ...Option) (*http.Response, error) { + r, err := http.NewRequest(http.MethodGet, url, nil) + if err != nil { + return nil, err + } + + return Do(key, r, opts...) +} + +// Post sends an HTTP POST request to the service assocated with the given key. +func Post(key, url, contentType string, body io.Reader, opts ...Option) (*http.Response, error) { + r, err := http.NewRequest(http.MethodPost, url, body) + if err != nil { + return nil, err + } + + return Do(key, r, opts...) +} + func doRequest(key string, r *http.Request, opts ...Option) (resp *http.Response, err error) { brk := breaker.GetBreaker(key) err = brk.DoWithAcceptable(func() error { diff --git a/rest/httpc/requests_test.go b/rest/httpc/requests_test.go index 151dac62..0062c492 100644 --- a/rest/httpc/requests_test.go +++ b/rest/httpc/requests_test.go @@ -11,9 +11,9 @@ import ( func TestDo(t *testing.T) { svr := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { })) - req, err := http.NewRequest(http.MethodGet, svr.URL, nil) - assert.Nil(t, err) - resp, err := Do("foo", req, func(cli *http.Client) { + _, err := Get("foo", "tcp://bad request") + assert.NotNil(t, err) + resp, err := Get("foo", svr.URL, func(cli *http.Client) { cli.Transport = http.DefaultTransport }) assert.Nil(t, err) @@ -22,9 +22,9 @@ func TestDo(t *testing.T) { func TestDoNotFound(t *testing.T) { svr := httptest.NewServer(http.NotFoundHandler()) - req, err := http.NewRequest(http.MethodGet, svr.URL, nil) - assert.Nil(t, err) - resp, err := Do("foo", req) + _, err := Post("foo", "tcp://bad request", "application/json", nil) + assert.NotNil(t, err) + resp, err := Post("foo", svr.URL, "application/json", nil) assert.Nil(t, err) assert.Equal(t, http.StatusNotFound, resp.StatusCode) }