0

GraphQLプロジェクトでイントロスペクションを無効にしようとしていますが、使用している特定のフレームワークでうまくいきません。一部の記事では、モジュールで実行できると述べていCcodeRegistryますが、それは読み取り専用の逆コンパイルされたソースです。フレームワークでこれを達成した人はい GraphQL-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>
4

1 に答える 1

0

Graphql-java

graphql-java では、 をGraphQLSchema使用してを構築しますGraphQLSchema.Builder。イントロスペクション クエリを無効にするためにビルドする前に、イントロスペクション フィールドのビルダーの可視性を設定する必要があります。

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

builder.fieldVisibility(NoIntrospectionGraphqlFieldVisibility.NO_INTROSPECTION_FIELD_VISIBILITY);

GraphQLSchema = builder.build();

graphql-java-tools 実装を参照として使用できます。

Graphql-Java ツール

graphql-java-tools では、 をSchemaParser 使用してを構築しますSchemaParserBuilder。SchemaParserBuilder には SchemaParserOptions オブジェクトが必要です。SchemaParserOptions を構築するときに、イントロスペクション クエリを有効または無効にできます。これは非常に単純化された実装です。

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

graphql-spring-boot 実装を参照として使用できます。

Graphql-spring-boot

graphql-java-tools READMEに従って、graphql-spring-boot を使用している場合はgraphql.tools.introspection-enabled、application.properties または application.yml ファイルでプロパティを 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  

Graphql-spqr

Graphql-spqr では、考え方は graphql-java と同じです: ビルダー フィールドの可視性の設定です。実装方法については、この質問に対する私の回答を参照してください。

于 2020-11-17T23:21:27.087 に答える