热巧克力中的 , 和 ,ScopedContextData
有LocalContextData
什么区别?ContextData
问问题
429 次
1 回答
1
上下文数据:
这是全局上下文数据。此请求中的所有解析器都可以访问此数据。
你可以设置它:
services.AddGraphQLServer()
.SetContextData("foo", "bar");
如果您需要访问 HTTP 上下文:
services.AddGraphQLServer()
.AddHttpRequestInterceptor<CustomInterceptor>()
public class CustomInterceptor : DefaultHttpRequestInterceptor
{
public override ValueTask OnCreateAsync(
HttpContext context,
IRequestExecutor requestExecutor,
IQueryRequestBuilder requestBuilder,
CancellationToken cancellationToken)
{
requestBuilder.AddProperty("foo", "bar");
return base.OnCreateAsync(context, requestExecutor, requestBuilder, cancellationToken);
}
}
ScopedContextData:
可用于此解析器的整个子树这是一个不可变的,可以通过上下文在解析器或中间件中修改:
context.ScopedContextData = context.ScopedContextData.SetItem("foo","bar");
本地上下文数据:
仅在解析器管道内可用。这可用于在中间件之间进行通信。这是一个不可变的,可以通过上下文在解析器或中间件中进行修改:
context.LocalContextData = context.LocalContextData.SetItem("foo","bar");
于 2021-01-26T16:01:45.367 回答