在GraphQL中,响应通常如下所示。
{
"data": [{
"id": 1,
"username": "Jon Snow",
"email": "crow@northofthew.all",
"age": 20
}, {
"id": 2,
"username": "Tyrion Lannister",
"email": "drunk@i.mp",
"age": 34
}, {
"id": 3,
"username": "Sansa Stark",
"email": "redhead@why.me",
"age": 17
}]
}
是否可以将元数据添加到您的回复中,例如像这样的分页。
{
"pagination": {
"total": 14,
"count": 230,
},
"data": [{
"id": 1,
"username": "Jon Snow",
"email": "crow@northofthew.all",
"age": 20
}, {
"id": 2,
"username": "Tyrion Lannister",
"email": "drunk@i.mp",
"age": 34
}]
}
我正在使用express-graphql并且目前将这些分页放到自定义响应标头中,这很好,但它可以更好。由于GraphQL响应已经包含了"数据",因此添加更多"数据"并不是很奇怪。它的回应。
答案 0 :(得分:1)
根据作为无效GraphQL响应的规范,重新强化@CommonsWare已经声明的内容。关于分页,Relay有自己的分页方法connections,但实际上,其他几种方法是可能的,甚至更适合某些情况(连接不是银弹)。
我希望通过补充说明GraphQL的层次结构性质使相关数据处于同一水平来增强已经说过的内容。一个例子值得千言万语,所以在这里:
query Q {
pagination_info { # what is this info related to? completely unclear
total
count
}
user {
friends {
id
}
}
}
,而不是...
query Q {
user {
friends {
pagination_info { # fairly obvious that this is related to friends
total
count
}
friend {
id
}
}
}
}