【问题标题】:Repository ‘type’: ‘NOT_FOUND’ graphQL API存储库“类型”:“NOT_FOUND”graphQL API
【发布时间】:2021-06-19 18:09:08
【问题描述】:

最近我一直在 github 上使用 graphql API,我有一些查询正常工作,包括一个突变。

顺便说一句,这是在企业版上。

我使用的一个简单查询如下(以所有者/名称为例):

query MyQuery {
  repository(name: "name", owner: "owner") {
    id
  }
}

但是有一个奇怪的问题。 它在我的电脑(带有请求库的 Python 脚本)和其他几台电脑上也能正常工作。

但在某些 PC 上,最重要的是在我们的构建机器上,它在 33 个不同存储库中的 2 个上显示 NOT_FOUND(总是相同的 2 个)。

错误如下(以所有者/名称为例):

{'type': 'NOT_FOUND', 'path': ['repository'], 'locations': [{'line': 3, 'column': 9}], 'message': "无法解析到名为“所有者/名称”的存储库。"}

我尝试过的一些事情:

  • 不同的令牌(无变化)
  • Curl 命令似乎可以工作,即使在受影响的 PC 上也是如此。

我在 Python 上用于请求的代码行。

response = requests.post(url=GRAPHQL_URL, json=query, headers=self._headers)

有人也遇到过这个问题吗?

谢谢。

【问题讨论】:

  • graphql API 查询对于 org reposuser repos 是否相同?

标签: python python-requests graphql github-api


【解决方案1】:

与此同时,我设法解决了这个问题。

不完全确定这背后的科学原理。 在打印我发送到 github (response.requests.headers) 的 post 有效负载后,我发现请求库正在删除标头。经过一番阅读,这似乎是由于 url 的重定向,出于安全原因,它删除了包含我的令牌的标头。

我要解决的问题如下: (该类用于避免使用.netrc config)

class NullAuth(requests.auth.AuthBase):
    def __call__(self, r):
        return r

然后传递:

response = requests.post(url=GRAPHQL_URL, json=query, headers=self._headers, auth=NullAuth())

【讨论】:

    猜你喜欢
    • 2018-04-30
    • 2018-08-02
    • 2018-05-31
    • 1970-01-01
    • 2019-12-11
    • 1970-01-01
    • 1970-01-01
    • 2022-07-30
    • 1970-01-01
    相关资源
    最近更新 更多