【发布时间】:2022-01-10 03:04:54
【问题描述】:
所以我再次尝试获取此数据,但它返回一个错误
data.Body undefined (type []byte has no field or method Body)
在此代码的第 16 和 23 行。所以当它解码json时 如果有人可以帮助我, 这是我的代码
func SkyblockActiveAuctions() (structs.SkyblockActiveAuctions, error) {
var auctions structs.SkyblockActiveAuctions
startTime := time.Now()
statusCode, data, err := fasthttp.Get(nil, "https://api.hypixel.net/skyblock/auctions")
if err != nil {
return auctions, err
}
fmt.Println(statusCode)
var totalPages = auctions.TotalAuctions
for i := 0; i < totalPages; i++ {
statusCode, data1, err := fasthttp.Get(nil, "https://api.hypixel.net/skyblock/auctions")
if err != nil {
return auctions, err
}
fmt.Println(statusCode)
json.NewDecoder(data1.Body).Decode(&auctions)
fmt.Println(auctions.LastUpdated)
}
endTime := time.Now()
var timeTook = endTime.Sub(startTime).Milliseconds()
fmt.Println(data)
json.NewDecoder(data.Body).Decode(&auctions)
fmt.Println(auctions.LastUpdated)
fmt.Println(timeTook)
return auctions, err
}
【问题讨论】:
-
使用 std 库 http 包,您会发现更少的惊喜和更多的示例材料,特别是因为您仍然不熟悉该语言。没有理由使用
fasthttp包,除非您遇到了专门设计用来解决的问题。 -
好的,所以我试图在 json 中获取大约 45 页的 1000 个项目,如果我想要速度,我应该使用什么?
-
net/http面临的瓶颈是什么? “45 页”毫无意义,一次 45 个请求几乎没有什么可担心的。如果您在分配和垃圾收集方面遇到瓶颈(在 json 解码之外,因为这是一个完全不同的包),也许可以查看fasthttp,但由于您甚至还没有功能代码,我敢打赌您还没有以此为基准。 -
谢谢你,但有什么方法可以让我的代码异步快速http获取请求?
-
@Ultimate,即使是 fasthttp 文档本身也说你应该坚持使用 net/http。您可能会发现这个问题对于弄清楚如何对您的 http 请求进行排队或扇出很有用:stackoverflow.com/questions/70217232/…