使用Go,我希望查询API端点并将结果输出到Gorm SQLite数据库。这之前(这里)已经完成,但我需要自己编写代码。
API端点返回一个JSON数组,对于数组中的每个交易,我想将其放入一个结构中,然后将其作为行添加到SQLite数据库中。
结构定义如下:
type Trade struct {
TradeID int64 `json:"id"`
Price string `json:"price"`
Qty string `json:"qty"`
QuoteQty string `json:"quoteQty"`
Time int64 `json:"time"`
IsBuyerMaker bool `json:"isBuyerMaker"`
IsBestMatch bool `json:"isBestMatch"`
}
这些类型可能看起来很奇怪,但是通过使用以下代码的PowerShell来确定的:
PS C:\Git> $body = @{"symbol" = "ETHEUR";"limit" = 1000}
PS C:\Git> $response = Invoke-RestMethod https://api.binance.com/api/v3/trades -Body $body
PS C:\Git> $response[0] | gm
TypeName: System.Management.Automation.PSCustomObject
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
id NoteProperty long id=21731777
isBestMatch NoteProperty bool isBestMatch=True
isBuyerMaker NoteProperty bool isBuyerMaker=True
price NoteProperty string price=3539.03000000
qty NoteProperty string qty=0.28600000
quoteQty NoteProperty string quoteQty=1012.16258000
time NoteProperty long time=1620822731248
因此,到目前为止,我拥有的Go函数如下:
func getTrade(symbol string, limit int) {
uri := fmt.Sprintf("https://api.binance.com/api/v3/trades?symbol=%v&limit=%v", symbol, limit)
db, err := gorm.Open(sqlite.Open("test.db"), &gorm.Config{})
if err != nil {
panic("failed to connect database")
}
// Create the fields in the database based on the Trade Struct
db.AutoMigrate(&Trade{})
// Query Binance API endpoint
response, err := http.Get(uri)
// Log if an error occurred
if err != nil {
log.Fatalln(err)
}
// Defer closing object
defer response.Body.Close()
// Create trade struct
trade := Trade{}
我感到非常卡住,就像我错过了与编组有关的东西一样,有人可以帮助我吗?
冉冉说
慕斯709654
肥皂起泡泡
相关分类