sqlite的api,便于内部使用
liuxiaolong
2019-05-14 39efbe0a4b7da36555250439ebea6f242374d339
NewClient use factory
6个文件已添加
239 ■■■■■ 已修改文件
areaApi_test.go 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
client.go 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
clientFactory.go 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
go.mod 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
httpClient.go 161 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
util.go 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
areaApi_test.go
New file
@@ -0,0 +1,34 @@
package dbapi
import (
    "fmt"
    "testing"
)
func TestGetLocalCameraTree(t *testing.T) {
    var api AreaApi
    body := api.GetLocalCameraTree(0)
    fmt.Println(body)
}
func TestAreaAdd(t *testing.T) {
    var api AreaApi
    var area = Area{
        Parentid: 0,
        Name:     "哈哈哈",
    }
    flag := api.AreaAdd(area)
    fmt.Println(flag)
}
func TestAreaUpdate(t *testing.T) {
    var api AreaApi
    var area = Area{
        Id:       1,
        Name:     "区域更新测试",
        Parentid: 0,
    }
    flag := api.AreaUpdate(area)
    fmt.Println(flag)
}
client.go
New file
@@ -0,0 +1,20 @@
package dbapi
type Client interface {
    //GET
    DoGetRequest(url string, params map[string]string, headers map[string]string) ([]byte, error)
    //POST
    DoPostRequest(url string, contentType string, body map[string]interface{}, params map[string]string, headers map[string]string) ([]byte, error)
    //PUT
    DoPutRequest(url string, contentType string, body map[string]interface{}, headers map[string]string) ([]byte, error)
    //DELETE
    DoDeleteRequest(url string, contentType string, body map[string]interface{}, headers map[string]string) ([]byte, error)
}
const (
    BASIC_URL            = "http://192.168.1.115:8000"
    DATA_URL_PREFIX      = "/data/api-v"
    CONTENT_TYPE_FORM    = "application/x-www-form-urlencoded"
    CONTENT_TYPE_MULFORM = "multipart/form-data"
    CONTENT_TYPE_JSON    = "application/json"
)
clientFactory.go
New file
@@ -0,0 +1,6 @@
package dbapi
//Factory new client
func NewClient() Client {
    return &HttpClient{}
}
go.mod
New file
@@ -0,0 +1,3 @@
module dbapi
go 1.12
httpClient.go
New file
@@ -0,0 +1,161 @@
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 {
        log.Println(err)
        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{}
    log.Printf("Go GET URL : %s \n", request.URL.String())
    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 {
            log.Println(err)
            return resultBytes, err
        }
    }
    request, err := http.NewRequest("POST", url, bytes.NewBuffer(bodyJson))
    if err != nil {
        log.Println(err)
        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 {
            log.Println(err)
            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 {
            log.Println(err)
            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
}
util.go
New file
@@ -0,0 +1,15 @@
package dbapi
import "reflect"
//struct转map
func Struct2Map(obj interface{}) map[string]interface{} {
    t := reflect.TypeOf(obj)
    v := reflect.ValueOf(obj)
    var data = make(map[string]interface{})
    for i := 0; i < t.NumField(); i++ {
        data[t.Field(i).Name] = v.Field(i).Interface()
    }
    return data
}