package client import ( "bytes" "io/ioutil" "mime/multipart" "net/http" "net/url" "strings" ) const ( Post = "POST" Get = "GET" ) var client = &http.Client{} func Request(method, url, data string, headers ...map[string]string) ([]byte, error) { reqest, err := http.NewRequest(method, url, strings.NewReader(data)) if err != nil { return nil, err } if len(headers) > 0 { for key, value := range headers[0] { reqest.Header.Add(key, value) } } response, err := client.Do(reqest) if err != nil { return nil, err } defer response.Body.Close() result, err := ioutil.ReadAll(response.Body) if err != nil { return nil, err } return result, nil } func RequestFormData(url string, data url.Values, headers ...map[string]string) ([]byte, error) { read := &bytes.Buffer{} write := multipart.NewWriter(read) for key, value := range data { for _, val := range value { write.WriteField(key, val) } } write.Close() reqest, err := http.NewRequest("POST", url, read) if err != nil { return nil, err } if len(headers) > 0 { if _, ok := headers[0]["Content-Type"]; ok { headers[0]["Content-Type"] = write.FormDataContentType() } else { reqest.Header.Add("Content-Type", write.FormDataContentType()) } for key, value := range headers[0] { reqest.Header.Add(key, value) } } else { reqest.Header.Add("Content-Type", write.FormDataContentType()) } reqest.Header.Add("X-Recook-System", "recookapi") response, err := client.Do(reqest) if err != nil { return nil, err } defer response.Body.Close() result, err := ioutil.ReadAll(response.Body) if err != nil { return nil, err } return result, nil }