-
-
Save superbrothers/dae0030c151d1f3c24311df77405169b to your computer and use it in GitHub Desktop.
package main | |
import ( | |
"context" | |
"fmt" | |
"log" | |
"net/http" | |
"time" | |
) | |
func main() { | |
req, err := http.NewRequest("GET", "http://www.yahoo.co.jp", nil) | |
if err != nil { | |
log.Fatalf("%v", err) | |
} | |
ctx, cancel := context.WithTimeout(req.Context(), 1*time.Millisecond) | |
defer cancel() | |
req = req.WithContext(ctx) | |
client := http.DefaultClient | |
res, err := client.Do(req) | |
if err != nil { | |
log.Fatalf("%v", err) | |
} | |
fmt.Printf("%v\n", res.StatusCode) | |
} |
I made a simple example of NewRequestWithContext
https://gist.github.com/2minchul/6d344a0f1f85ead1530803df2e4f9894
another my example, as variant https://gist.github.com/littlefuntik/37b04e1e97510877485ec6856ecdc33c
There are many examples that use the parent context from context.Background()
. But in this example, I see the parent is using r.Context()
from request instead. So, which one that should I use?
There are many examples that use the parent context from
context.Background()
. But in this example, I see the parent is usingr.Context()
from request instead. So, which one that should I use?
it's actually the same. When he initialized the request with http.NewRequest()
, per the documentation, the context of the request is the background context:
// NewRequest wraps NewRequestWithContext using the background context.
use https://golang.org/pkg/net/http/#NewRequestWithContext directly (Go 1.13)