GraphQL查询:如果不为空,则仅包含字段
GraphQL是否有可能让客户端告诉服务器,只有当某个字段不是GraphQL查询:如果不为空,则仅包含字段,graphql,Graphql,GraphQL是否有可能让客户端告诉服务器,只有当某个字段不是null时,它才需要该字段 给定查询 query HeroAndFriends { hero { name friends { name } } } 然后,响应应该如下所示 { "data": { "hero": { "friends": [ { "name": "Luke Skywalker" },
null
时,它才需要该字段
给定查询
query HeroAndFriends {
hero {
name
friends {
name
}
}
}
然后,响应应该如下所示
{
"data": {
"hero": {
"friends": [
{
"name": "Luke Skywalker"
},
{
"name": "Han Solo"
},
{
"name": "Leia Organa"
}
]
}
}
}
而不是
{
"data": {
"hero": {
"name": null,
"friends": [
{
"name": "Luke Skywalker"
},
{
"name": "Han Solo"
},
{
"name": "Leia Organa"
}
]
}
}
}
这在不违反GraphQL规范的情况下是可能的吗?据我所知,这是不可能的,有@skip和@include。指令但它们需要一个变量,我认为您可以与graphql团队合作,将指令扩展为仅包括字段(如果字段不为null)。您可以在前端使用以下ES6语法:
Object.keys(data).forEach((key) => (data[key] == null) && delete data[key]);
只是想知道:这种行为的用例是什么?@AhmadFerdousBinAlam我有一个Kotlin数据类,它具有默认(非空)值,在反序列化时我不想被覆盖。@Ahmad Ferdous,关于用例,如果服务器返回的数据稀疏的项数组怎么办?就像每个对象都有许多字段一样,只有少数字段实际包含某些内容而不是null。将这些字段从有效负载中排除以减小api响应的总体大小不是更好吗?