在 GraphQL 中获取没有预发布的最新版本
Get latest release without prerelease in GraphQL
我正在将我与 GitHub REST API 的连接迁移到 GraphQL API,我对获取最新版本感到困惑。
当我使用下面的端点通过 REST API 获取最新版本时,它永远不会 return 草稿版本或预发布版本。
/repos/:owner/:repo/releases/latest
但是,当我对 GraphQL 做同样的事情时 API 我无法过滤它,使用下面的查询我得到了最新版本,但如果它是和预发布我将不得不再次查询以找到另一个。
{
InovaFarmaApi: repository(owner: "precisaosistemas", name: "inovafarma-api") {
...releaseData
}
}
fragment releaseData on Repository {
releases (last: 2) {
nodes {
isPrerelease
}
}
}
我可以只筛选发行版而不筛选草稿发行版或预发行版吗?
看起来不像。
GitHub 开发人员文档完整列出了所有 GraphQL 对象类型、它们的字段和相关参数。 Repository in particular documents its releases field; that has the Relay connection parameters and an ordering, but the only supported 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
参数。
我正在将我与 GitHub REST API 的连接迁移到 GraphQL API,我对获取最新版本感到困惑。
当我使用下面的端点通过 REST API 获取最新版本时,它永远不会 return 草稿版本或预发布版本。
/repos/:owner/:repo/releases/latest
但是,当我对 GraphQL 做同样的事情时 API 我无法过滤它,使用下面的查询我得到了最新版本,但如果它是和预发布我将不得不再次查询以找到另一个。
{
InovaFarmaApi: repository(owner: "precisaosistemas", name: "inovafarma-api") {
...releaseData
}
}
fragment releaseData on Repository {
releases (last: 2) {
nodes {
isPrerelease
}
}
}
我可以只筛选发行版而不筛选草稿发行版或预发行版吗?
看起来不像。
GitHub 开发人员文档完整列出了所有 GraphQL 对象类型、它们的字段和相关参数。 Repository in particular documents its releases field; that has the Relay connection parameters and an ordering, but the only supported 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
参数。