首页 > 解决方案 > Golang:构建 SDK 以与 Web API 交互时返回什么?

问题描述

我正在使用 Go 为 Web 应用程序构建一个 SDK。

我想知道向 SDK 用户返回数据的最佳形式是什么。

例如,下面是一个接收 http.Request 对象的函数。应该从此函数返回的首选对象/结构是什么?

func runRequest(request *http.Request) map[string]interface{} {
    resp, err := http.DefaultClient.Do(request)
    //handle error
    defer resp.Body.Close()

    body, err := ioutil.ReadAll(resp.Body)
    var data map[string]interface{}
    err2 := json.Unmarshal([]byte(body), &data)
    //handle error

    return data
}

标签: oopgodesign-patternssdk

解决方案


对于这个简单的示例,您可以使用与使用相同的方法json.Unmarshal。也就是说,您的函数需要一个指向您想要解组响应正文的值的指针。

func RunRequest(request *http.Request, dst interface{}) error {
    resp, err := http.DefaultClient.Do(request)
    if err != nil {
        return err
    }
    defer resp.Body.Close()

    return json.NewDecoder(resp.Body).Decode(dst)
}

推荐阅读