Open renom opened 11 months ago
@renom Could you explain your request in detail along with some samples, please? I need more confidence about using the same instance of Context in all the requests.
@renom Any feedback?
@jeevatkm thanks for the response. I thought about initializing the client once when multiple requests are sent further in the same code block. Or setting the context when the client is passed to another service as a func argument, to avoid passing the context separately. If you still need code examples, I can make them a little bit later.
Case 1 (now):
func DoSomething(ctx context.Context, url1, url2, url3 string) (err error) {
client := resty.New()
_, err = client.R().SetContext(ctx).Get(url1)
if err != nil {
return err
}
_, err = client.R().SetContext(ctx).Get(url2)
if err != nil {
return err
}
_, err = client.R().SetContext(ctx).Get(url3)
if err != nil {
return err
}
return nil
}
Case 1 (updated):
func DoSomething(ctx context.Context, url1, url2, url3 string) (err error) {
client := resty.New().SetContext(ctx)
_, err = client.R().Get(url1)
if err != nil {
return err
}
_, err = client.R().Get(url2)
if err != nil {
return err
}
_, err = client.R().Get(url3)
if err != nil {
return err
}
return nil
}
Case 2 (now):
func DoSomething(client *resty.Client, ctx context.Context, url1, url2, url3 string) (err error) {
_, err = client.R().SetContext(ctx).Get(url1)
if err != nil {
return err
}
_, err = client.R().SetContext(ctx).Get(url2)
if err != nil {
return err
}
_, err = client.R().SetContext(ctx).Get(url3)
if err != nil {
return err
}
return nil
}
Case 2 (updated):
func DoSomething(client *resty.Client, url1, url2, url3 string) (err error) {
_, err = client.R().Get(url1)
if err != nil {
return err
}
_, err = client.R().Get(url2)
if err != nil {
return err
}
_, err = client.R().Get(url3)
if err != nil {
return err
}
return nil
}
We can still pass the context:
err := DoSomething(client.SetContext(ctx), url1, url2, url3)
@renom Thank you for the code snippets to explain the use case flow.
Add
client.SetContext
similar toclient.SetHeader
(Client method)