什么是GraphQL

在这里插入图片描述
这里是GraphQL的中文官网:Graphql

正如GraphQL官网所说:你可以通过一个单一入口端点得到你所有的数据能力
在这里插入图片描述
如果我们采用原来的restful风格来进行api的调用,我们需要使用不同的提交方式或者url带参数(eg:get)
但是我们使用graphql的话,我们的url就是固定的

这里以GitHub的doc为例

在这里插入图片描述
我们可以通过这一个端点去获得我们需要的所有数据。

graphiql(grapgql开发工具)的安装

下载地址:graphiql

下载完成后,需要在graphiql中配置我们GitHub的一个认证

详细流程可见GitHub文档:iql配置

在这里插入图片描述

graphql的最主要两种操作

  • query(查询数据)
  • mutation(修改数据)
    在这里插入图片描述
#查询ORG下REPO的id
query{
  repository(owner: "ORG",name: "yanci_repo"){
    id
  }
}

#查询ORG下REPO下的每一个branch对应的id,patten,还有checkcontexts
query{
  repository(owner: "ORG",name: "yanci_repo"){
    branchProtectionRules(last: 1){
      nodes{
        id,
        pattern,
        requiredStatusCheckContexts,
      }
    }
  }
}
#通过branch的id对其进行修改更新(rules就是我们创建的变量,再通过参数传递给mutation)
mutation($rule: UpdateBranchProtectionRuleInput!) {
  updateBranchProtectionRule(input:$rule) {
    clientMutationId
  }
}
{
  "rule": {
    "isAdminEnforced": true,
    "pattern": "master",
    "branchProtectionRuleId": "********",
    "requiredStatusCheckContexts": []
  }
}
#没有找到对应branch的话通过创建对应的branch在进行更新操作
mutation($rule: CreateBranchProtectionRuleInput!) {
  createBranchProtectionRule(input:$rule) {
    branchProtectionRule{
      id
    }
  }
}

{
  "rule": {
    "pattern": "master",
    "repositoryId": "**************",
    "requiredStatusCheckContexts": "code-freeze by yanci",
    "requiresStatusChecks": true,
    "requiresStrictStatusChecks": true,
    "isAdminEnforced": true
  }
}

持续更新ing…

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐