गो के साथ यह मेरा पहला अनुभव है, मैं एक अजगर पृष्ठभूमि से आ रहा हूं और मैं इस पोस्ट को चलाने की कोशिश कर रहा हूं api(https://reqres.in/api/users) पोस्ट डेटा के विभिन्न सेट के साथ गोरआउट्स का उपयोग करते हुए समानांतर में, जो इस कोड में परिवर्तनशील jsonStr है।

डेटा की सूची के साथ समानांतर में इस एपीआई को चलाने के लिए किसी भी मदद की बहुत सराहना की जाती है

मेरा डेटा

डेटा = [{"नाम": "बोनी गौड", "मूवीज़": ["टर्मिनेटर", "ट्रांसफॉर्मर"], {"नाम": "सारा पॉलिन", "मूवीज़": ["नो कंट्री फॉर ओल्ड", " जेम्स बॉन्ड"] }

मेरा कोड:

package main

import (
    "fmt"
    "io/ioutil"
    "net/http"
    "time"
    "bytes"
)

func main() {
    start := time.Now()
    url := "https://reqres.in/api/users"
    fmt.Println("URL:>", url)
    var jsonStr = []byte(`{"name": "paul rudd", "movies": ["I Love You Man", "Role Models"] }`)
    req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonStr))
    req.Header.Set("X-Custom-Header", "myvalue")
    req.Header.Set("Content-Type", "application/json")

    client := &http.Client{}
    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    fmt.Println("response Status:", resp.Status)
    fmt.Println("response Headers:", resp.Header)
    body, _ := ioutil.ReadAll(resp.Body)
    fmt.Println("response Body:", string(body))

    fmt.Print("Everything:", time.Since(start))
    fmt.Print(string(body))

}
0
min2bro 31 जिंदा 2020, 11:56

1 उत्तर

सबसे बढ़िया उत्तर

आप प्रतीक्षा समूह या त्रुटि समूह का उपयोग कर सकते हैं। यहाँ उदाहरण है:

package main

import (
    "bytes"
    "fmt"
    "golang.org/x/sync/errgroup"
    "io/ioutil"
    "net/http"
    "time"
)

func main() {
    dataSets := []string{`{"name": "paul rudd", "movies": ["I Love You Man", "Role Models"] }`,
        `{"name": "paul rudd", "movies": ["I Love You Man", "Role Models"] }`}

    var eg errgroup.Group

    client := http.DefaultClient
    for _, jsonStr := range dataSets {
        eg.Go(func() error {
            return callClient(client, jsonStr)
        })
    }

    if err := eg.Wait(); err != nil {
        fmt.Printf("Encountered error: %v", err)
    }

    fmt.Println("Successfully finished.")
}

func callClient(client *http.Client, jsonStr string) error {
    start := time.Now()
    url := "https://reqres.in/api/users"
    fmt.Println("URL:>", url)

    req, err := http.NewRequest("POST", url, bytes.NewBuffer([]byte(jsonStr)))
    req.Header.Set("X-Custom-Header", "myvalue")
    req.Header.Set("Content-Type", "application/json")

    resp, err := client.Do(req)
    if err != nil {
        return fmt.Errorf("send request: %w", err)
    }
    defer resp.Body.Close()

    fmt.Println("response Status:", resp.Status)
    fmt.Println("response Headers:", resp.Header)

    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        return fmt.Errorf("read body: %w", err)
    }

    fmt.Println("response Body:", string(body))

    fmt.Print("Everything:", time.Since(start))
    fmt.Print(string(body))

    return nil
}
1
yogy fresta rahmawan 31 जिंदा 2020, 12:17