当前位置: 首页 > 知识库问答 >
问题:

在GraphQL java工具中禁用GraphQL自检

丁良骏
2023-03-14

我正试图在我的项目中禁用< code>GraphQL内省,但在我使用的特定框架上运气不佳。有些文章说它可以在< code>CcodeRegistry模块中完成,但那是一个只读的反编译源代码。有人用< code > graph QL-Java-kickstart 框架实现了这一点吗?

以下是我的pom文件中的依赖项:

        <dependency>
            <groupId>com.graphql-java</groupId>
            <artifactId>graphql-java</artifactId>
            <version>${graphql.java.version}</version>
        </dependency>
        <dependency>
            <groupId>com.graphql-java-kickstart</groupId>
            <artifactId>graphql-java-tools</artifactId>
            <version>${graphql.java.tools.version}</version>
        </dependency>
        <dependency>
            <groupId>com.graphql-java</groupId>
            <artifactId>graphql-java-extended-validation</artifactId>
            <version>0.0.3</version>
        </dependency>

共有1个答案

爱茂勋
2023-03-14

使用图形ql-java,您可以使用图形QL化学生成器构建图形QL化学。您需要在构建之前为自检字段设置构建器可见性,以禁用自检查询。

GraphQLSchema.Builder builder = GraphQLSchema.newSchema()
                                     .query(query)
                                     .mutation(mutation)
                                     .subscription(subscription)
                                     .additionalTypes(dictionary);

builder.fieldVisibility(NoIntrospectionGraphqlFieldVisibility.NO_INTROSPECTION_FIELD_VISIBILITY);

GraphQLSchema = builder.build();

您可以使用graph ql-java-tools实现作为参考。

使用graph ql-java-tools,您可以使用SchemaParserBuilder构建一个SchemaParser。SchemaParserBuilder需要一个SchemaParserOptions对象。构建SchemaParserOptions时,您可以启用或禁用自省查询。这是一个非常简化的实现。

SchemaParserBuilder builder = new SchemaParserBuilder();
final SchemaParserOptions.Builder optionsBuilder = newOptions();
optionsBuilder.introspectionEnabled(introspectionEnabled);
return builder.options(optionsBuilder.build()).build();

您可以使用图形 ql Spring引导实现作为参考。

如果您使用的是graphql-spring-boot,根据graphql-java-tools自述文件,您可以通过在application.properties或application.yml文件中将< code > graph QL . tools . introspection-enabled 属性设置为false来禁用自检查询。

graphql:
    tools:
        schema-location-pattern: "**/*.graphqls"
        # Enable or disable the introspection query. Disabling it puts your server in contravention of the GraphQL
        # specification and expectations of most clients, so use this option with caution
        introspection-enabled: false  

使用图形ql-spqr,其理念与图形ql-java中的想法相同:设置构建器字段可见性。请参阅我对此问题的答案,了解如何实现它。

 类似资料:
  • 我是graphql新手,使用官方graphql发现了2个java实现:https://www.graphql-java.com/documentation/v10/ 和 https://github.com/graphql-java-kickstart/graphql-java-tools 比如在java中实现graphql有什么不同?

  • 问题内容: 当用户禁用JavaScript时,我正在尝试调试网站的功能。我想知道如何禁用Google Chrome DevTools中页面的JavaScript? 问题答案: 单击“ 开发人员工具”角落的菜单,单击“设置”,然后在下进行检查。

  • 我试图在用户禁用其JavaScript时调试网站的功能。我想知道如何从Google Chrome DevTools中禁用JavaScript页面?

  • 我有一个web服务,它会返回给定文档id的pdf流,我会将内容类型设置为application/pdf,并将输出写入IFRAME,直到这一点,我完成并确定!我的问题是:我的要求是禁用IFRAME中的pdf下载工具栏按钮,是否有任何方法可以使用JavaScript或j query禁用pdf工具栏按钮,我尝试了以下方法: 我尝试设置工具栏=0为iframe标签,但它无法工作。有人请告诉我如何实现这一点

  • 问题内容: 我想向用户显示一些文本。我要发送的字符串变量包含多个换行符,并且我不想显示。所以我做了: bar.html: 但是启用了自动转义,我看到的是。同样,我的方法也不安全,我希望除文本外的每个标记都被转义。我看了flask.Markup模块,但是它们也不起作用。 正确的方法是什么? 问题答案: 您可以采用两种合理的方法。 解决方案1 当您将不安全的输入和HTML组合到一个变量中时,实际上是一

  • 问题内容: 请在http://plnkr.co/edit/9dyBVZh67sxmIqUQB50S?p=preview上的 plunkr代码中查看我的示例 我有4个按钮,其中两个按钮由于某种情况而被禁用。 我希望能够在两个被禁用的按钮上显示工具提示,第一个被禁用的按钮显示“ Test itemName2不可用”,第二个被禁用的按钮显示“ Test itemName4不可用”,而另一个则没有工具提示