ContextData:
This is the global context data. This data is accessible for all resolvers in this request.
You can set it with:
services.AddGraphQLServer()
.SetContextData("foo", "bar");
if you need access to the HTTP Context:
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:
Is available for the whole subtree of this resolver
This is a immutable that can be modified in resolvers or middlewares via the context:
context.ScopedContextData = context.ScopedContextData.SetItem("foo","bar");
LocalContextData:
Is only available inside the resolver pipeline. This can be used to communicate between middlewares.This is a immutable that can be modified in resolvers or middlewares via the context:
context.LocalContextData = context.LocalContextData.SetItem("foo","bar");
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…