-
-
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)