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

如何为GraphQL Hot Chocolate的QueryRequestBuilder添加请求头?

在Hot Chocolate中使用QueryRequestBuilder添加请求头

你之前的错误在于使用AddProperty方法——这个方法是用来添加GraphQL请求的自定义附加属性,而非HTTP请求头,所以授权逻辑无法识别你传入的Authorization信息,导致返回403。

下面是两种正确添加请求头的方式:

方式一:使用AddHeader方法直接添加

IReadOnlyQueryRequest request = QueryRequestBuilder.New()
    .SetQuery("query{ clients(where:{state:{eq:ACTIVE}}) { items{ id code date name email desc state created modify } pageInfo{ hasNextPage hasPreviousPage } totalCount } }")
    .AddHeader("environment", "test") // 注意拼写修正:environment(原代码拼写为enviroment)
    .AddHeader("Authorization", "Bearer token_value")
    .Create();
                
IExecutionResult result = await executor.ExecuteAsync(request);

方式二:通过字典批量设置请求头

如果需要添加多个请求头,也可以先构建字典再传入:

var requestHeaders = new Dictionary<string, string>
{
    {"environment", "test"},
    {"Authorization", "Bearer token_value"}
};

IReadOnlyQueryRequest request = QueryRequestBuilder.New()
    .SetQuery("query{ clients(where:{state:{eq:ACTIVE}}) { items{ id code date name email desc state created modify } pageInfo{ hasNextPage hasPreviousPage } totalCount } }")
    .SetHeaders(requestHeaders)
    .Create();
                
IExecutionResult result = await executor.ExecuteAsync(request);

额外注意事项

  • 检查请求头的拼写正确性,比如原代码中的enviroment应为environment,拼写错误会导致头信息无法被识别
  • 确保Authorization头格式正确:Bearer与token值之间必须有空格,且token是有效的JWT令牌
  • 若使用较旧版本的Hot Chocolate,可能需要通过Properties字典传递头信息,但优先推荐使用上述官方支持的AddHeader/SetHeaders方法

内容的提问来源于stack exchange,提问作者Allan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 23:45:42