创建一个 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
}