我正在将与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
}
}
}
我可以仅针对发行版而不是草稿发行版或预发行版进行过滤吗?
答案 0 :(得分:1)
看起来不像
GitHub开发人员文档具有所有GraphQL对象类型,其字段及其关联参数的完整列表。 Repository特别是记录了其releases field;具有中继连接参数和顺序,但仅支持的ReleaseOrderField值为CREATED_AT
和NAME
。
这意味着您需要重复调用各个版本的页面,直到找到符合您条件的页面为止。
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
参数。