Я использую graphql с java на стороне сервера и graphql / apollo с javascript на стороне клиента. В целом я очень доволен настройкой, но в последнее время я застрял в проблеме с DataFetchingEnvironment.
У меня есть два запроса graphql, которые идентично вызываются на стороне клиента. На стороне сервера методы преобразователя принимают DataFetchingEnvironment в качестве параметра, чтобы получить контекст и получить значение из передаваемого файла cookie.
Один запрос выполняется безупречно, и значение cookie считывается. По другому запросу DataFetchingEnvironment получает значение null.
Я не понимаю, почему это происходит. Существуют ли какие-либо причины или условия, при которых метод преобразователя graphql-java не должен получать среду выборки данных? Есть идеи относительно того, почему это может быть?
Вот мои зависимости pom, чтобы показать номера версий.
<groupId>com.graphql-java</groupId>
<artifactId>graphql-spring-boot-starter</artifactId>
<version>3.10.0</version>
<groupId>com.graphql-java</groupId>
<artifactId>graphql-java-tools</artifactId>
<version>4.3.0</version>
<groupId>com.graphql-java</groupId>
<artifactId>graphql-java-servlet</artifactId>
<version>4.6.0</version>
<groupId>com.zhokhov.graphql</groupId>
<artifactId>graphql-datetime-spring-boot-starter</artifactId>
<version>1.1.0</version>
Вот скелетная версия метода распознавания ошибок:
public List<Something> getSomething( String somethingId, DataFetchingEnvironment dataFetchingEnvironment ) {
log( dataFetchingEnvironment ); // result is null
}
@Vinnie Я не помню точных деталей, но это определенно была проблема с тем, как разрешается перегрузка резолвера и дополнительные поля. Мой лучший совет: внимательно просмотрите свои запросы / преобразователи, чтобы убедиться, что все до боли понятно для GraphQL. Его легко запутать. Старайтесь избегать перегрузки методов и убедитесь, что какой единственный метод обрабатывает запрос, до боли ясно, потому что процесс разрешения graphql может легко запутаться и подумать, что параметр среды выборки данных - это что-то еще.
Спасибо за ответ @Mark. Я думаю, что делал это неправильно - но, как оказалось, мне это все равно было не нужно.


Вы разрешили это? У меня похожая проблема.