Я использую версию GraphQL-Java: 11.0.
Из Официальная документация по GraphQL-Java я обнаружил, что могу отключить запрос самоанализа как 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()
, поэтому я не могу установить fieldVisibility
для самоанализа. Может ли кто-нибудь предложить, как я могу изменить приведенный выше код, чтобы приспособить вариант fieldVisibility
?
Любая помощь горячо приветствуется. Спасибо!
Опция fieldVisibility
также доступна на RuntimeWiring
, так что я только что сделал
RuntimeWiring.Builder builder = graphQLResolvers.newRuntimeWiringBuilder();
builder.fieldVisibility(NoIntrospectionGraphqlFieldVisibility.NO_INTROSPECTION_FIELD_VISIBILITY);
Надеюсь, это поможет кому-то :)