Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ScopedContextData VS LocalContextData VS ContextData in Hot Chocolate

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

like image 310
Arad Avatar asked Oct 30 '25 22:10

Arad


1 Answers

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");
like image 82
Pascal Senn Avatar answered Nov 02 '25 16:11

Pascal Senn



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!