diff --git a/netutil/request.go b/netutil/request.go index baf563e..c46c8c0 100644 --- a/netutil/request.go +++ b/netutil/request.go @@ -22,27 +22,27 @@ import ( //HttpGet send get http request func HttpGet(url string, params ...interface{}) (*http.Response, error) { - return request(http.MethodGet, url, params...) + return doHttpRequest(http.MethodGet, url, params...) } //HttpPost send post http request func HttpPost(url string, params ...interface{}) (*http.Response, error) { - return request(http.MethodPost, url, params...) + return doHttpRequest(http.MethodPost, url, params...) } //HttpPut send put http request func HttpPut(url string, params ...interface{}) (*http.Response, error) { - return request(http.MethodPut, url, params...) + return doHttpRequest(http.MethodPut, url, params...) } //HttpDelete send delete http request func HttpDelete(url string, params ...interface{}) (*http.Response, error) { - return request(http.MethodDelete, url, params...) + return doHttpRequest(http.MethodDelete, url, params...) } // HttpPatch send patch http request func HttpPatch(url string, params ...interface{}) (*http.Response, error) { - return request(http.MethodPatch, url, params...) + return doHttpRequest(http.MethodPatch, url, params...) } // ParseHttpResponse decode http response to specified interface diff --git a/netutil/request_util.go b/netutil/request_util.go index 784d631..de98f49 100644 --- a/netutil/request_util.go +++ b/netutil/request_util.go @@ -10,7 +10,7 @@ import ( "strings" ) -func request(method, reqUrl string, params ...interface{}) (*http.Response, error) { +func doHttpRequest(method, reqUrl string, params ...interface{}) (*http.Response, error) { if len(reqUrl) == 0 { return nil, errors.New("url should be specified") } @@ -24,53 +24,29 @@ func request(method, reqUrl string, params ...interface{}) (*http.Response, erro } client := &http.Client{} + err := setUrl(req, reqUrl) + if err != nil { + return nil, err + } + switch len(params) { - case 0: - err := setUrl(req, reqUrl) - if err != nil { - return nil, err - } case 1: - err := setUrl(req, reqUrl) - if err != nil { - return nil, err - } err = setHeader(req, params[0]) if err != nil { return nil, err } case 2: - err := setHeader(req, params[0]) - if err != nil { - return nil, err - } - err = setQueryParam(req, reqUrl, params[1]) + err := setHeaderAndQueryParam(req, reqUrl, params[0], params[1]) if err != nil { return nil, err } case 3: - err := setHeader(req, params[0]) - if err != nil { - return nil, err - } - err = setQueryParam(req, reqUrl, params[1]) - if err != nil { - return nil, err - } - err = setBodyByte(req, params[2]) + err := setHeaderAndQueryAndBody(req, reqUrl, params[0], params[1], params[2]) if err != nil { return nil, err } case 4: - err := setHeader(req, params[0]) - if err != nil { - return nil, err - } - err = setQueryParam(req, reqUrl, params[1]) - if err != nil { - return nil, err - } - err = setBodyByte(req, params[2]) + err := setHeaderAndQueryAndBody(req, reqUrl, params[0], params[1], params[2]) if err != nil { return nil, err } @@ -78,13 +54,40 @@ func request(method, reqUrl string, params ...interface{}) (*http.Response, erro if err != nil { return nil, err } - } resp, e := client.Do(req) return resp, e } +func setHeaderAndQueryParam(req *http.Request, reqUrl string, header, queryParam interface{}) error { + err := setHeader(req, header) + if err != nil { + return err + } + err = setQueryParam(req, reqUrl, queryParam) + if err != nil { + return err + } + return nil +} + +func setHeaderAndQueryAndBody(req *http.Request, reqUrl string, header, queryParam, body interface{}) error { + err := setHeader(req, header) + if err != nil { + return err + } + err = setQueryParam(req, reqUrl, queryParam) + if err != nil { + return err + } + err = setBodyByte(req, body) + if err != nil { + return err + } + return nil +} + func setHeader(req *http.Request, header interface{}) error { if header != nil { switch v := header.(type) { @@ -109,6 +112,7 @@ func setHeader(req *http.Request, header interface{}) error { return nil } + func setUrl(req *http.Request, reqUrl string) error { u, err := url.Parse(reqUrl) if err != nil { @@ -117,6 +121,7 @@ func setUrl(req *http.Request, reqUrl string) error { req.URL = u return nil } + func setQueryParam(req *http.Request, reqUrl string, queryParam interface{}) error { var values url.Values if queryParam != nil {