如何向GitHub GraphQL API发出未经身份验证的请求

时间:2019-06-12 14:53:06

标签: github graphql

我正在尝试使用github graph api发出请求并仅获取我需要的详细信息,即。一些公共仓库中的星星数量。一个未经身份验证的请求,可以使用V3(REST)api获取有关回购协议的详细信息,效果很好,但是它包含了我不需要的百万个回购协议的详细信息,我只需要回购协议上的星星数即可。

当我发出以下请求时:

query {
  repository(owner: "facebook", name: "react") {
    stargazers {
      totalCount
    }
  }
}

在使用fetch的javascript中,它会响应401 Unauthorized

fetch('https://api.github.com/graphql', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ query: '{ repository(owner: "facebook", name: "react") { stargazers(last: 10) { totalCount } } }' })
})
.then(res => res.json())
.then(res => console.log(res));

我需要在公共网站上显示数据,因此我无法使用github帐户中的令牌进行身份验证。
有没有某种方法可以在不进行身份验证的情况下发出请求,也许有一些解决方法。还是不可能?

2 个答案:

答案 0 :(得分:1)

如果您最终需要每小时发出超过 5,000 个请求,那么您可以创建一个 OAuth Github App,并让每个用户使用自己的密钥从他们自己的浏览器发出请求。

答案 1 :(得分:0)

GitHub GraphQL API需要进行身份验证才能发出请求。

您可以进行等效的REST API调用并丢弃不需要的信息,或者让服务器端代码使用适当的API令牌发出请求并将该信息代理到您的前端代码。

请注意,如果您希望您的应用程序向GitHub API发出大量的总请求,则可能需要采用后者,并实现缓存。