Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
1.2k views
Welcome To Ask or Share your Answers For Others

1 Answer

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...