oop - 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
}
解决方案
对于这个简单的示例,您可以使用与使用相同的方法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)
}
推荐阅读
- windows-subsystem-for-linux - 我可以从 Linux 向主机 Windows (WSL) 发送命令吗?
- php - 一个 cronjob 可以继续连续运行 30 分钟吗?
- javascript - Android OS 11 - 无法使用 executeScript 执行键盘操作
- reactjs - 从数组中渲染元素,这取决于对象是否具有某些字段
- http - POST 请求上的 KHTTP android.os.NetworkOnMainThreadException
- android - 我如何不仅锁定设备,而且锁定整个设备?
- c# - 访问我的网站时如何获取客户端 IP 地址?
- spring - Spring:@Controller 在 @Configuration 中创建 @Bean 之前调用
- python - 在tkinter的while循环中将一个组合框绑定到另一个组合框
- javascript - 在表单标签更改按钮/输入选项中选择