golang request body query 请求方式封装


创建一个 requests目录,在requests目录下创建一个request.go文件,内容如下


package requests import ( "bytes" "encoding/json" "io/ioutil" "net/http" ) func Error(err error) (interface{}, error) { return nil, err } type Request struct { Url string Method string Data map[string]string Headers map[string]string ReqInfo map[string]interface{} } func (r *Request) Body() (map[string]interface{}, error) { data, err := json.Marshal(r.Data) Error(err) client := &http.Client{} req, err := http.NewRequest(r.Method, r.Url, bytes.NewBuffer(data)) Error(err) req.Header.Add("Content-Type", "application/json;charset=UTF-8") for k, v := range r.Headers { req.Header.Add(k, v) } rep, err := client.Do(req) Error(err) defer rep.Body.Close() body, err := ioutil.ReadAll(rep.Body) Error(err) if err = json.Unmarshal(body, &r.ReqInfo); err != nil
{ return nil, err } return r.ReqInfo, nil } func (r *Request) Query() (map[string]interface{}, error) { client := &http.Client{} req, err := http.NewRequest(r.Method, r.Url, nil) Error(err) req.Header.Add("Content-Type", "application/json;charset=UTF-8") for k, v := range r.Headers { req.Header.Add(k, v) } query := req.URL.Query() for k, v := range r.Data { query.Add(k, v) } req.URL.RawQuery = query.Encode() rep, err := client.Do(req) Error(err) rep.Body.Close() body, err := ioutil.ReadAll(rep.Body) Error(err) err = json.Unmarshal(body, &r.ReqInfo) Error(err) return r.ReqInfo, nil }