Welcome to WuJiGu Developer Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.0k views
in Technique[技术] by (71.8m points)

graphql - ScopedContextData VS LocalContextData VS ContextData in Hot Chocolate

What are the differences between ScopedContextData, LocalContextData, and ContextData, in Hot Chocolate?

question from:https://stackoverflow.com/questions/65904703/scopedcontextdata-vs-localcontextdata-vs-contextdata-in-hot-chocolate

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

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");

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to WuJiGu Developer Q&A Community for programmer and developer-Open, Learning and Share
...