sqlite的api,便于内部使用
liuxiaolong
2019-06-19 2f07172ea8f03f4127c2965771e6bb34d63f5e01
httpClient.go
New file
@@ -0,0 +1,155 @@
package dbapi
import (
   "bytes"
   "encoding/json"
   "io/ioutil"
   "log"
   "net/http"
)
type HttpClient struct{}
//发起GET请求
func (httpApi HttpClient) DoGetRequest(url string, params map[string]string, headers map[string]string) ([]byte, error) {
   var body []byte
   request, err := http.NewRequest("GET", url, nil)
   if err != nil {
      return body, err
   }
   // add params
   query := request.URL.Query()
   if params != nil {
      for key, val := range params {
         query.Add(key, val)
      }
      request.URL.RawQuery = query.Encode()
   }
   //add headers
   client := &http.Client{}
   resp, err := client.Do(request)
   if err != nil {
      return body, err
   }
   defer resp.Body.Close()
   body, err = ioutil.ReadAll(resp.Body)
   if err != nil {
      return body, err
   }
   return body, nil
}
//发起POST请求
func (httpApi HttpClient) DoPostRequest(url string, contentType string, body map[string]interface{}, params map[string]string, headers map[string]string) ([]byte, error) {
   var resultBytes []byte
   var bodyJson []byte
   if body != nil {
      var err error
      bodyJson, err = json.Marshal(body)
      if err != nil {
         return resultBytes, err
      }
   }
   request, err := http.NewRequest("POST", url, bytes.NewBuffer(bodyJson))
   if err != nil {
      return resultBytes, err
   }
   request.Header.Set("Content-type", contentType)
   //add params
   q := request.URL.Query()
   if params != nil {
      for key, val := range params {
         q.Add(key, val)
      }
      request.URL.RawQuery = q.Encode()
   }
   // add headers
   if headers != nil {
      for key, val := range headers {
         request.Header.Add(key, val)
      }
   }
   client := &http.Client{}
   resp, err := client.Do(request)
   if err != nil {
      return resultBytes, err
   }
   defer resp.Body.Close()
   resultBytes, err = ioutil.ReadAll(resp.Body)
   if err != nil {
      return resultBytes, err
   }
   return resultBytes, nil
}
//构造put请求
func (httpApi HttpClient) DoPutRequest(url string, contentType string, body map[string]interface{}, headers map[string]string) ([]byte, error) {
   var resultBytes []byte
   var bodyJson []byte
   if body != nil {
      var err error
      bodyJson, err = json.Marshal(body)
      if err != nil {
         return resultBytes, err
      }
   }
   request, err := http.NewRequest("PUT", url, bytes.NewBuffer(bodyJson))
   if err != nil {
      log.Println(err)
      return resultBytes, err
   }
   request.Header.Set("Content-type", contentType)
   // add headers
   if headers != nil {
      for key, val := range headers {
         request.Header.Add(key, val)
      }
   }
   client := &http.Client{}
   resp, err := client.Do(request)
   if err != nil {
      return resultBytes, err
   }
   defer resp.Body.Close()
   resultBytes, err = ioutil.ReadAll(resp.Body)
   if err != nil {
      return resultBytes, err
   }
   return resultBytes, nil
}
//构造delete请求
func (httpApi HttpClient) DoDeleteRequest(url string, contentType string, body map[string]interface{}, headers map[string]string) ([]byte, error) {
   var resultBytes []byte
   var bodyJson []byte
   if body != nil {
      var err error
      bodyJson, err = json.Marshal(body)
      if err != nil {
         return resultBytes, err
      }
   }
   request, err := http.NewRequest("DELETE", url, bytes.NewBuffer(bodyJson))
   if err != nil {
      log.Println(err)
      return resultBytes, err
   }
   request.Header.Set("Content-type", contentType)
   // add headers
   if headers != nil {
      for key, val := range headers {
         request.Header.Add(key, val)
      }
   }
   client := &http.Client{}
   resp, err := client.Do(request)
   if err != nil {
      return resultBytes, err
   }
   defer resp.Body.Close()
   resultBytes, err = ioutil.ReadAll(resp.Body)
   if err != nil {
      return resultBytes, err
   }
   return resultBytes, nil
}