Sobes.tech
Junior — Middle

Cum se poate stabili o limită de timp pentru a aștepta răspunsul la efectuarea unei solicitări HTTP?

sobes.tech AI

Răspuns de la AI

În Go, pentru a seta o limită de timp pentru răspunsul unei solicitări HTTP, se folosește de obicei un context cu timeout sau se configurează timeout-urile în http.Client.

Exemplu cu utilizarea contextului:

ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()

req, err := http.NewRequestWithContext(ctx, "GET", "https://example.com", nil)
if err != nil {
    // tratarea erorii
}

client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
    // eroare, de exemplu timeout
}
// tratarea răspunsului

De asemenea, se pot seta timeout-uri în http.Client:

client := &http.Client{
    Timeout: 5 * time.Second, // timeout general pentru întreaga solicitare
}
resp, err := client.Get("https://example.com")

Astfel, dacă serverul nu răspunde în timpul specificat, cererea va fi întreruptă cu o eroare de timeout.