在GraphQL中获得没有预发布的最新版本

时间:2018-12-28 15:31:54

标签: github graphql github-api

我正在将与GitHub REST API的连接迁移到GraphQL API,并且对获取最新版本感到困惑。

当我使用此终结点通过REST API获取最新版本时,它将永远不会返回草稿版本或预发布版本。

/repos/:owner/:repo/releases/latest

但是,当我使用GraphQL API进行相同操作时,无法过滤,使用查询波纹管可以获得最新版本,但是如果是最新版本,则必须再次查询以查找另一个版本。

{
  InovaFarmaApi: repository(owner: "precisaosistemas", name: "inovafarma-api") {
    ...releaseData
  }
}

fragment releaseData on Repository {
  releases (last: 2) {
      nodes {
        isPrerelease
      }
    }
}

我可以仅针对发行版而不是草稿发行版或预发行版进行过滤吗?

1 个答案:

答案 0 :(得分:1)

看起来不像

GitHub开发人员文档具有所有GraphQL对象类型,其字段及其关联参数的完整列表。 Repository特别是记录了其releases field;具有中继连接参数和顺序,但仅支持的ReleaseOrderField值为CREATED_ATNAME

这意味着您需要重复调​​用各个版本的页面,直到找到符合您条件的页面为止。

query GetRelease($owner: String!, $name: String!, $cursor: String) {
  repository(owner: $owner, name: $name) {
    releases(before: $cursor,
             last: 1,
             orderBy: {field: CREATED_AT, order: DESC}) {
      pageInfo { hasPreviousPage, startCursor }
      nodes {
        isPrerelease
        ...OtherReleaseData
      }
    }
  }
}

如果您发布的版本中isPrerelease为真(不需要),并且hasPreviousPage也为真,请重新运行查询,将先前的startCursor值传递为cursor参数。