如何在GraphQl-Java中脱节内置查询?

发布于 2025-01-26 20:01:09 字数 1517 浏览 2 评论 0 原文

我正在使用graphql-java版本:11.0

来自我发现我可以禁用内省查询,如belwo:

GraphQLSchema schema = GraphQLSchema.newSchema()
        .query(StarWarsSchema.queryType)
        .fieldVisibility(NoIntrospectionGraphqlFieldVisibility.NO_INTROSPECTION_FIELD_VISIBILITY)
        .build();

但是问题在上述解决方案中 fieldvisibility 可与 graphqlschema.newschema()返回的对象一起使用。

我正在构建GraphQl架构如下:

public GraphQLProvider init(GraphQLResolvers graphQLResolvers) {
        GraphQLSchema graphQLSchema = buildSchema (typeRegistry, runtimeWiring);
        this.graphQL = createInstance (graphQLSchema);
        return this;
    }



private GraphQLSchema buildSchema (TypeDefinitionRegistry typeRegistry, RuntimeWiring runtimeWiring) {
        SchemaGenerator schemaGenerator = new SchemaGenerator();
        return schemaGenerator.makeExecutableSchema(typeRegistry, runtimeWiring);
    }

private GraphQL createInstance (GraphQLSchema graphQLSchema) {
        return GraphQL.newGraphQL(graphQLSchema).build();
    }

如上所述,我没有在任何地方使用 graphqlschema.newschema()在任何地方>对于IntropsectionQuery,谁能建议如何修改上述代码以适应 fieldvisibility 选项?

任何帮助都非常感谢。谢谢!

I am using GraphQL-Java version:11.0

From Official GraphQL-Java documenetation I found that I can disable the introspection query as belwo :

GraphQLSchema schema = GraphQLSchema.newSchema()
        .query(StarWarsSchema.queryType)
        .fieldVisibility(NoIntrospectionGraphqlFieldVisibility.NO_INTROSPECTION_FIELD_VISIBILITY)
        .build();

Same has been given in this SO question's answer

But the issue is in above solutions the fieldVisibility is available with object returned by GraphQLSchema.newSchema().

I am building the GraphQL schema as below:

public GraphQLProvider init(GraphQLResolvers graphQLResolvers) {
        GraphQLSchema graphQLSchema = buildSchema (typeRegistry, runtimeWiring);
        this.graphQL = createInstance (graphQLSchema);
        return this;
    }



private GraphQLSchema buildSchema (TypeDefinitionRegistry typeRegistry, RuntimeWiring runtimeWiring) {
        SchemaGenerator schemaGenerator = new SchemaGenerator();
        return schemaGenerator.makeExecutableSchema(typeRegistry, runtimeWiring);
    }

private GraphQL createInstance (GraphQLSchema graphQLSchema) {
        return GraphQL.newGraphQL(graphQLSchema).build();
    }

As you can see in above code, I am not using GraphQLSchema.newSchema() anywhere, so I am not able to set the fieldVisibility for introspectionQuery, can anyone suggest how can I modify above code to accommodate fieldVisibility option?

Any help is much appreciated. Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

一场春暖 2025-02-02 20:01:09

fieldvisibility 选项也可以在 RuntimeWiring 上获得,因此我只是

RuntimeWiring.Builder builder = graphQLResolvers.newRuntimeWiringBuilder();
 builder.fieldVisibility(NoIntrospectionGraphqlFieldVisibility.NO_INTROSPECTION_FIELD_VISIBILITY);

希望它能帮助某人:)

The fieldVisibility option is also available on RuntimeWiring, so I just did

RuntimeWiring.Builder builder = graphQLResolvers.newRuntimeWiringBuilder();
 builder.fieldVisibility(NoIntrospectionGraphqlFieldVisibility.NO_INTROSPECTION_FIELD_VISIBILITY);

Hope it helps someone :)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文