В graphql- java я переопределяю getExtensions в GraphQLError, чтобы передать расширение «code» для использования клиентом Apollo.
Когда я добавил точку останова, я вижу, что GraphQLObjectMapper видит ошибку в executeResult со всеми его полями, включая расширения, правильно установленные как и ожидалось.
Однако, когда ошибка достигает значения apollo, она странным образом преобразуется и появляется весь объект ошибки (включая массив расширений) быть вставленным в поле строкового сообщения следующим образом:
{
"errors": [
{
"message": "Unexpected error value: { message: \"Exception while fetching data (/myQuery) : Didn't work\", locations: [[Object]], path: [\"myQuery\"], extensions: { code: \"MY_CODE\", classification: \"DataFetchingException\" } }",
"locations": [
{
"line": 2,
"column": 3
}
],
"path": [
"mailLabels"
],
"extensions": {
"code": "INTERNAL_SERVER_ERROR"
}
}
],
"data": null
}
Насколько я могу судить, apollo не делает ничего плохого. Я подозреваю, что graphql- java может быть тем, кто вставляет всю эту ошибку в поле "message" и затем устанавливает код как "INTERNAL_SERVER_ERROR", но я не совсем уверен. Могу ли я что-то сделать на graphql- java конец, чтобы предотвратить это и заставить его правильно передавать расширения и не вставлять их в значение сообщения? Любая помощь будет оценена.