关于GraphQL

你可以在下面链接中查看GraphQL:
https://docs.github.com/en/graphql/overview/explorer

点击Prettify会删除注释或不必要的内容。

在檢查時,發現”fetchViewer”是查詢操作的名稱。

查詢fetchViewer {
viewer {
login
}
}

キャプチャ.PNG

在请求的部分中,显示出了JSON数据。

虽然是同样的东西,但如果保持原样就会出错。
即使帐号不同,也不能以相同的方式提取数据。

{
  user(login: "business1") {
    bio
    login
  }
  user(login: "business2") {
    bio
    login
  }
}

因此,给它起一个别名(称为别名)
例如,可以使用user1和user2
如下所示。

{
  user1: user(login: "business1") {
    bio
    login
  }
  user2: user(login: "business2") {
    bio
    login
  }
}

在处理类似③中的共享字段,例如bio和login时,我们可以使用Fragment来以一种单一的方式进行描述。可以通过展开Fragment来实现。

{
  user1: user(login: "business1") {
    ...commonFields
  }
  user2: user(login: "business2") {
    ...commonFields
  }
}

fragment commonFields on User {
   bio
   login
}

当您在查询旁边添加操作名称时,您可以选择执行哪个查询。

query getUser1 {
  user(login: "businessryuya") {
    bio
  }
}

query getUser2 {
  user(login: "ryuyamatsuzawa") {
    bio
  }
}

如果您将变量(login:$login)作为查询变量输入,直接在查询后定义其类型即可。

image.png

⑦ 变异 yì)

在查询中,无法删除或更新数据。
而在变更中,可以实现这一步骤。
顺便说一下,像下面的叹号意味着必须的。
starrableId: ID!

在中文中,可以这样表达:

书写方式如下,首先通过查询(query)确认所需的信息,然后再创建变更(mutation)。

query repogitory{
  repository(owner: "gipcompany",name: "udemy-react-redux-crud-application") {
    id
    name
    url
  }
}

mutation addStar {
  addStar(input: {starrableId: "MDEwOlJlcG9zaXRvcnkxMjM5NTA3MjU="}) {
    starrable {
      id
      viewerHasStarred
    }
  }
}

⑧内联片段的意思是展开节点中的User。

query search {
  search(query: "we work hard", type:USER, first:2) {
    nodes {
     ... on User{
      id
      name
      url
    }
      ... on Organization{
      id
      name
      url
      projectsUrl
    } 
    }
  }
}

然而,如果不包含projectsUrl,就无法区分两者返回的结果是哪一个,因此需要使用__typename。使用它可以明确指定是哪一个结果。

image.png
image.png

翻页

以中文本地化方式解释掉Relay-style cursor pagination。
这种方式已经被 GitHub 採用。
在实际实现中被广泛采用。
以下是一个例子,类似这样的实现。
我是在参考文档的同时编写的。

query searchRepositories($first: Int, $after: String, $last:Int, $before:String,$query:String!) {
  search(first: $first, after:$after, last:$last, before:$before, query:$query,type: REPOSITORY) {
    repositoryCount
    pageInfo{
      endCursor
      hasNextPage
      hasPreviousPage
      startCursor
    }
    edges{
      cursor
      node{
        ... on Repository{
          id
          name
          url
        }
      }
    }
  }
}

以下是查询变量

{
  "after": null,
  "before": null,
  "first": 2,
  "last": null,
  "query": "フロントエンジニア"
}
广告
将在 10 秒后关闭
bannerAds