Расширения вывода
Спецификация GraphQL подробно описывает, как должен форматироваться ответ: в частности, какие записи верхнего уровня должны использоваться в возвращаемом словаре — запрошенные данные добавляются под ключ data, а ошибки — под ключ errors.
Однако иногда требуется вывести дополнительную информацию: логи, предупреждения или подсказки. Такие записи не предусмотрены спецификацией, и добавлять их в виде отдельных записей верхнего уровня запрещено. Вместо этого спецификация GraphQL предоставляет специальное место, которое можно заполнять произвольным образом и передавать любые пользовательские данные: запись верхнего уровня extensions.
Как поясняется в разделе Response Format:
The response map may also contain an entry with key
extensions. This entry, if set, must have a map as its value. This entry is reserved for implementors to extend the protocol however they see fit, and hence there are no additional restrictions on its contents.
Функция «Proactive Feedback» в Gato GraphQL использует эту возможность для расширения ответа GraphQL API и предоставления дополнительной информации:
- Deprecations
- Warnings
Таким образом, мы можем предоставлять пользователям дополнительную информацию, указывающую на возможные улучшения запроса:
{
"extensions": {
"warnings": [
{
"message": "Dynamic variable with name 'props' had already been set, had its value overridden",
"locations": [
{
"line": 4,
"column": 25
}
]
}
]
},
"data": {
"posts": {
"excerpt": "Hello world!",
"Content": "<p>Hello world!</p>"
}
}
}