diff --git a/context.go b/context.go index 540e27f..f21ed48 100644 --- a/context.go +++ b/context.go @@ -864,19 +864,27 @@ func (c *Context) GetErrors() []error { return c.Errors } -// Client 返回 Engine 提供的 HTTPClient -// 方便在请求处理函数中进行出站 HTTP请求 +// Client 返回当前请求的 HTTPClient +// 如果请求处理函数或中间件设置了自定义 HTTPClient,返回该实例; +// 否则返回 Engine 提供的默认实例 // // Deprecated: 使用 HTTPC() 替代,新方法会自动关联请求 Context func (c *Context) Client() *httpc.Client { + if c.HTTPClient != nil { + return c.HTTPClient + } return c.engine.HTTPClient } // HTTPC 返回自动关联请求 Context 的 HTTP 客户端 // 当请求被取消时,通过此客户端发起的出站请求也会自动取消 func (c *Context) HTTPC() *contextHTTPClient { + client := c.HTTPClient + if client == nil { + client = c.engine.HTTPClient + } return &contextHTTPClient{ - client: c.engine.HTTPClient, + client: client, ctx: c.ctx, } }