如何解决ScopedContextData VS LocalContextData VS ContextData in Hot Chocolate
热巧克力中的 ScopedContextData
、LocalContextData
和 ContextData
之间有什么区别?
解决方法
上下文数据:
这是全局上下文数据。此请求中的所有解析器均可访问此数据。
你可以设置:
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");
LocalContextData:
仅在解析器管道内可用。这可以用于中间件之间的通信。这是一个不可变的,可以通过上下文在解析器或中间件中进行修改:
context.LocalContextData = context.LocalContextData.SetItem("foo","bar");
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。