我是一名新手,嘗試創建一個 Golang 腳本,該腳本從一個端點讀取,然后更新一些字段并將其發布到不同的端點。對端點的 PUT 請求將此作為curl 命令。curl -v \ -X PUT -H 'X-Api-Key:{Key}' \ -H 'Content-Type: application/json' url/{id} \ -d '{ "name" : "Somename", "type": "Sometype", "status" : "enabled"}'我希望與發送 GET 請求的端點保持相同的名稱和類型,但我希望在發布到其他端點時將狀態從啟用更改為禁用。因此,基本上我從一個端點獲得的任何結果都將保持不變,除了我需要更改為禁用的狀態。任何示例代碼都會有所幫助。這是我到目前為止的代碼,但它只是用于讀取端點。所以不確定如何將兩者結合起來。func main() { req, _ := http.NewRequest("GET", "URL", nil) req.Header.Set("X-Api-Key", <Key>) resp, _ := http.DefaultClient.Do(req) defer resp.Body.Close() body, _ := ioutil.ReadAll(resp.Body) var obj struct { Library []struct { Name string `json:"name"` Type string `json:”type”` Status string `json:”status"` } `json:”library"` } if err := json.Unmarshal(body, &obj); err != nil { panic(err) } for _, app := range obj.Library { fmt.Println(app.Name, app.Type, app.Status) }}
1 回答

揚帆大魚
TA貢獻1799條經驗 獲得超9個贊
您已經快完成了,只需循環遍歷庫項目、更新狀態并執行 http put 請求即可。
像這樣的東西應該有效(未經測試):
for _, item := range obj.Library {
item.Status = "disabled"
bs, err := json.Marshal(item)
// check err
req, err := http.NewRequest("PUT", "url", bytes.NewBuffer(bs))
// check err
res, err := http.DefaultClient.Do(req)
// check err
// check res.StatusCode
}
- 1 回答
- 0 關注
- 131 瀏覽
添加回答
舉報
0/150
提交
取消