Я заменяю существующую конечную точку REST на GraphQL.
В нашей существующей конечной точке REST мы возвращаем массив JSON.
[{
"id": "ABC"
},
{
"id": "123"
},
{
"id": "xyz"
},
{
"id": "789"
}
]
Похоже, что GraphQL оборачивает массив двумя дополнительными объектными слоями. Есть ли способ удалить слои «данные» и «клиент»?
Данные ответа:
{
"data": {
"Client": [
{
"id": "ABC"
},
{
"id": "123"
},
{
"id": "xyz"
},
{
"id": "789"
}
]
}
}
Мой запрос:
{
Client(accountId: "5417727750494381532d735a") {
id
}
}





Нет. В этом и заключалась вся цель GraphQL. Чтобы иметь единую конечную точку и позволить пользователям получать данные разного типа / детализации, указав входные данные в формате запроса, в отличие от REST API, а затем сопоставить их с возвращаемыми выходными данными JSON.
«данные» действуют как контейнер родительского / корневого уровня для различных запрошенных вами объектов. Без этих ключей в возвращаемых данных JSON невозможно будет разделить соответствующие данные. например
Вышеупомянутый запрос может быть изменен для включения другого объекта, такого как Владелец,
{
Client(accountId: "5417727750494381532d735a") {
id
}
Owner {
id
}
}В этом случае результат будет примерно таким:
{
"data": {
"Client": [
...
],
"Owner": [
...
]
}
}Без ключей «Клиент» и «Владелец» в выходном файле JSON невозможно разделить соответствующие значения массива.
В вашем случае вы можете получить только массив, выполнив data.Client на возвращаемом выходе.