我正在用GraphQL替换现有的REST端点。
在现有的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
}
}发布于 2018-05-09 07:52:32
不是的。这就是GraphQL的全部目的。拥有单一的endoint,并允许用户通过以查询格式指定输入来获取不同类型/粒度的数据,而不是REST API,然后将它们映射到返回的JSON输出。
‘'data’充当您所查询的不同实体的父/根级容器。如果返回的JSON数据中没有这些键,就无法分离相应的数据。例如:
您可以修改上面的查询,以包括其他实体,如Owner,
{
Client(accountId: "5417727750494381532d735a") {
id
}
Owner {
id
}
}
在这种情况下,输出将类似于
{
"data": {
"Client": [
...
],
"Owner": [
...
]
}
}
如果JSON输出中没有'Client‘和'Owner’键,就无法分隔相应的数组值。
在本例中,您只能通过对返回的输出执行data.Client来获取数组。
https://stackoverflow.com/questions/50242992
复制相似问题