How to set timeout for http.Get() requests in Golang?

HTTP Timeout
In Go, you can set a timeout for an http.Client by creating a custom http.Client with a Timeout field set to a time.Duration value, and then passing that custom http.Client to the http.Get() function. Here's an example:

Example

package main

import (
    "net/http"
    "time"
)

func main() {
    client := &http.Client{
        Timeout: 5 * time.Second,
    }
    _, err := client.Get("https://example.com")
    if err != nil {
        // handle error
    }
    // do something with response
}
In this example, the timeout is set to 5 seconds. You can adjust the duration as needed.

HTTP timeout using Context
You can also use context package to set a timeout, Here is an example:

Example

package main

import (
    "context"
    "net/http"
    "time"
)

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

    req, err := http.NewRequest("GET", "https://example.com", nil)
    if err != nil {
        // handle error
    }
    req = req.WithContext(ctx)

    client := &http.Client{}
    resp, err := client.Do(req)
    if err != nil {
        // handle error
    }
    // do something with resp
}
Here, context timeout will cancel the request if it takes more than 5 secs to complete.

Most Helpful This Week