Saya seorang pemula dan mencoba membuat skrip Golang yang membaca dari satu titik akhir kemudian memperbarui beberapa bidang dan posting ke titik akhir yang berbeda. Permintaan PUT ke titik akhir memiliki ini sebagai perintah curl.

curl -v \
     -X PUT -H 'X-Api-Key:{Key}' \
     -H 'Content-Type: application/json' url/{id} \
     -d '{ "name" : "Somename", "type": "Sometype", "status" : "enabled"}'

Saya ingin menyimpan nama dan tipe yang sama dari titik akhir yang saya kirim permintaan GET, tetapi saya ingin mengubah status dari diaktifkan menjadi dinonaktifkan saat memposting ke titik akhir lainnya. Jadi pada dasarnya hasil apa pun yang saya dapatkan dari satu titik akhir akan tetap sama kecuali status yang perlu saya ubah menjadi dinonaktifkan. Kode contoh apa pun akan membantu.

Ini adalah kode yang saya miliki sejauh ini tetapi hanya untuk membaca titik akhir. Jadi tidak yakin bagaimana cara menggabungkan keduanya.

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)
   }
}
-2
dontke 7 Agustus 2019, 04:42

1 menjawab

Jawaban Terbaik

Anda hampir sampai, hanya perlu mengulang item Perpustakaan, memperbarui status dan melakukan permintaan http put.

Sesuatu seperti ini seharusnya berfungsi (tidak diuji):

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
Pablo Lalloni 7 Agustus 2019, 02:19