feat: httpc 集成改进,自动关联请求 Context

- 新增 contextHTTPClient 包装器,自动关联请求 Context
- 新增 Context.HTTPC() 方法返回 contextHTTPClient
- Client() 标记为 Deprecated
- 添加 GetHTTPC() go:fix inline 兼容函数

当请求被取消时,出站 HTTP 请求也会自动取消。
This commit is contained in:
wjqserver 2026-04-21 22:55:26 +08:00
parent 10033f4a17
commit f2295c3084
3 changed files with 86 additions and 7 deletions

View file

@ -865,11 +865,22 @@ func (c *Context) GetErrors() []error {
}
// Client 返回 Engine 提供的 HTTPClient
// 方便在请求处理函数中进行出站 HTTP 请求
// 方便在请求处理函数中进行出站 HTTP请求
//
// Deprecated: 使用 HTTPC() 替代,新方法会自动关联请求 Context
func (c *Context) Client() *httpc.Client {
return c.HTTPClient
}
// HTTPC 返回自动关联请求 Context 的 HTTP 客户端
// 当请求被取消时,通过此客户端发起的出站请求也会自动取消
func (c *Context) HTTPC() *contextHTTPClient {
return &contextHTTPClient{
client: c.engine.HTTPClient,
ctx: c.ctx,
}
}
// Context() 返回请求的上下文,用于取消操作
// 这是 Go 标准库的 `context.Context`,用于请求的取消和超时管理
func (c *Context) Context() context.Context {
@ -1130,11 +1141,6 @@ func (c *Context) GetProtocol() string {
return c.Request.Proto
}
// GetHTTPC 获取框架自带传递的httpc
func (c *Context) GetHTTPC() *httpc.Client {
return c.HTTPClient
}
// GetLogger 获取engine的Logger接口
func (c *Context) GetLogger() Logger {
return c.engine.logger