You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Chi中间件中通过http.request传递上下文时出现报错

Chi中间件传递数据时类型转换错误的解决方法

你当前的代码直接基于context.Background()创建新上下文,覆盖了原请求中Chi框架自带的*chi.Context,导致后续处理逻辑找不到所需的上下文实例,抛出类型转换错误。

错误代码:

ctx := context.WithValue(context.Background(), int32(0), company)
next.ServeHTTP(w, r.WithContext(ctx))
return

报错信息:

interface conversion: interface {} is nil, not *chi.Context

修正后的代码:

// 基于原请求的context创建新上下文,保留Chi的上下文数据
ctx := context.WithValue(r.Context(), int32(0), company)
next.ServeHTTP(w, r.WithContext(ctx))
return

原因说明:

Chi框架会将自身的*chi.Context存储在HTTP请求的context中,供后续中间件和处理函数使用。如果直接用context.Background()创建全新上下文,会丢失原请求里的Chi上下文数据,导致后续代码尝试从nil中转换为*chi.Context时失败。正确的做法是基于原请求的r.Context()来扩展上下文,这样既保留了Chi的上下文,又能添加自定义数据。

内容的提问来源于stack exchange,提问作者Anirudh Kumar Aheer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 22:09:15