GitHub GraphQL API 是 GitHub 提供的一个强大的查询接口,允许开发者通过 GraphQL 查询语言来获取仓库、用户、组织等数据。GraphQL 是一种用于 API 的查询语言,它允许客户端请求所需的数据结构,而不是像 REST API 那样返回固定的数据结构。
你提到的问题是 GitHub GraphQL API 只返回每个上下文的最后一个 StatusContext
。这通常是因为 GraphQL 查询的设计方式导致的。
在 GraphQL 查询中,如果你请求了一个对象的多个字段,并且这些字段有相同的子字段,GraphQL 默认只会返回最后一个请求的子字段的值。这是因为 GraphQL 查询是基于请求的字段顺序来解析的。
要解决这个问题,你需要确保每个 StatusContext
都被单独请求。以下是一个示例查询,展示了如何正确请求多个 StatusContext
:
query {
repository(owner: "ownerName", name: "repoName") {
commit(statuses: first: 10) {
nodes {
statusContexts {
context
description
}
}
}
}
}
在这个查询中,statusContexts
字段被单独请求,确保每个 StatusContext
都会被返回。
以下是一个使用 JavaScript 和 Apollo Client 进行 GraphQL 查询的示例代码:
const { ApolloClient, InMemoryCache, gql } = require('apollo-boost');
const client = new ApolloClient({
uri: 'https://api.github.com/graphql',
headers: {
'Authorization': `Bearer YOUR_GITHUB_TOKEN`
},
cache: new InMemoryCache()
});
const GET_COMMIT_STATUSES = gql`
query {
repository(owner: "ownerName", name: "repoName") {
commit(statuses: first: 10) {
nodes {
statusContexts {
context
description
}
}
}
}
}
`;
client.query({ query: GET_COMMIT_STATUSES })
.then(result => console.log(result))
.catch(error => console.error(error));
通过这种方式,你可以确保每个 StatusContext
都被正确返回,而不是只返回最后一个。
领取专属 10元无门槛券
手把手带您无忧上云