GraphQL Github API格式
我想知道如何处理以下问题。我使用GraphQL通过以下查询查询v4 Github API:GraphQL Github API格式,graphql,github-api,apollo,Graphql,Github Api,Apollo,我想知道如何处理以下问题。我使用GraphQL通过以下查询查询v4 Github API: { viewer { repositories(first: 30) { edges { node { name } } } } } 这给了我一个这样的回答: { "data": { "viewer": { "repositories": {
{
viewer {
repositories(first: 30) {
edges {
node {
name
}
}
}
}
}
这给了我一个这样的回答:
{
"data": {
"viewer": {
"repositories": {
"edges": [
{
"node": {
"name": "test-repo"
}
},
{
"node": {
"name": "another-repo"
}
}
]
}
}
}
}
我对GraphQL非常陌生,我知道在我的查询中我需要提供边和节点,但我更希望以这种方式得到回复,因为我不想知道前端中的“边”和“节点”:
{
"data": {
"viewer": {
"repositories": [
{
"name": "test-repo"
},
{
"name": "another-repo"
}
]
}
}
}
}
我猜这种响应对于GraphQL来说是正常的,但是为了在我的前端更容易使用,一直重写为响应是相当麻烦的。是否有某种方法可以发出“边”和“节点”并获得我想要的格式,或者这完全取决于我来处理
我看过一些像这样的库,但我不知道这是否适合处理这样的事情。希望对GraphQL稍有经验的人能告诉我更多信息。有时候,服务提供两个端点:中继端点(带边和节点)和简单端点 看起来GitHub只有一个中继端点。在这种情况下,您唯一能做的就是在前端手动格式化响应 实际上,需要这样复杂的响应结构,因为我们经常需要进行分页。请看一个例子:
{
getArticle(id: "some-id") {
id
userId
user {
id
name
}
tags(first: 10, after: "opaqueCursor") {
edges {
node {
id
name
itemsCount
}
}
pageInfo {
hasNextPage
hasPreviousPage
endCursor
startCursor
}
}
}
}
pageInfo
与边缘位于同一级别
因此,如果以后需要进行分页,最好保持响应格式不变。有时,服务提供两个端点:中继端点(带边缘和节点)和简单端点
看起来GitHub只有一个中继端点。在这种情况下,您唯一能做的就是在前端手动格式化响应
实际上,需要这样复杂的响应结构,因为我们经常需要进行分页。请看一个例子:
{
getArticle(id: "some-id") {
id
userId
user {
id
name
}
tags(first: 10, after: "opaqueCursor") {
edges {
node {
id
name
itemsCount
}
}
pageInfo {
hasNextPage
hasPreviousPage
endCursor
startCursor
}
}
}
}
pageInfo
与边缘位于同一级别
因此,如果以后需要进行分页,最好保持响应格式不变。如果知道没有搜索这些关系,可以删除边
查询。通过检查pageInfo
值hasNextPage
并使用endCursor
作为after
查询参数,基于光标的分页将起作用:
viewer {
repositories(first: 30,after:"<CURSOR_STRING>") {
totalCount
pageInfo{
hasNextPage
endCursor
}
nodes{
name
}
}
}
如果知道没有沿着这些关系进行搜索,则可以删除边
查询。通过检查pageInfo
值hasNextPage
并使用endCursor
作为after
查询参数,基于光标的分页将起作用:
viewer {
repositories(first: 30,after:"<CURSOR_STRING>") {
totalCount
pageInfo{
hasNextPage
endCursor
}
nodes{
name
}
}
}