如何为特定查询请求启用Apollo跟踪和热巧克力功能?

时间:2019-02-07 21:46:20

标签: c# .net .net-core graphql

有时候,我希望能够为非常特定的查询请求启用 Apollo跟踪,因为该特定请求的执行速度很慢。有没有办法用Hot Chocolate做到这一点?如果可以,我该如何告诉特定的查询请求我实际上对跟踪感兴趣?

1 个答案:

答案 0 :(得分:2)

首先,是的热巧克力确实支持按需的 Apollo Tracing ,这意味着基于每个查询请求。只需在服务器端进行一些配置调整即可。

通常,您将这样创建一个 GraphQL 模式:

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        // Here I register my services / repositories; omitted for brevity

        services.AddGraphQL(sp => Schema.Create(c =>
        {
            // Here I register my schema types and so on; omitted for brevity
        }));
    }

     // Code omitted for brevity
}

要启用按需跟踪,您需要将TracingPreference选项设置为TracingPreference.OnDemand。然后,前面的代码片段将如下所示。

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        // Here I register my services / repositories; omitted for brevity

        services.AddGraphQL(sp => Schema.Create(c =>
        {
            // Here I register my schema types and so on; omitted for brevity
        }),
        new QueryExecutionOptions
        {
            TracingPreference = TracingPreference.OnDemand
        });
    }

     // Code omitted for brevity
}

将跟踪首选项设置为OnDemand之后,您只需将以下HTTP标头GraphQL-Tracing=1传递给您感兴趣的每个查询请求即可。

有关阿波罗追踪的更多信息,请前往here