2

我是私人存储库的合作者,能够对其进行编辑、推送代码、创建问题、关闭问题等。我正在尝试创建关于存储库中打开和关闭的问题的报告。为了实现这一点,我需要根据时间间隔和标签来解决问题。我发现 GitHub 搜索 API 对我很有用。

我从创建一个令牌(PAT)开始,给它整个回购范围 范围截图

然后为了测试 API,我用令牌点击了下面的 URL

https://api.github.com/search/issues?q=repo:orgname/reponame

我能够得到结果。

然后我尝试通过使用相同的标记添加is:issue和限定符来缩小范围is:closed

https://api.github.com/search/issues?q=repo:orgname/reponame+is:issue+is:closed

我得到了以下回复

{
  "message": "Validation Failed",
  "errors": [
    {
      "message": "The listed users and repositories cannot be searched either because the resources do not exist or you do not have permission to view them.",
      "resource": "Search",
      "field": "q",
      "code": "invalid"
    }
  ],
  "documentation_url": "https://docs.github.com/v3/search/"
}

问题存在,我可以在 Github 网站上搜索它,但无法通过 github search api。我可以应用 repo 限定符,但无法添加任何其他限定符。

我在这里想念什么?

4

1 回答 1

0

我发现有两件事可能导致这种情况。

在您的情况下,它可能是权限,因为您的编码似乎很好。

在私有存储库上专门搜索 PR 或问题需要“内容”权限(这在 GitHub 文档中被错误地记录为需要元数据权限)。如果用户没有公共存储库但他们确实有私有存储库,那么您会收到类似上述的权限错误,而不是如果他们没有任何类型的存储库或只有公共存储库但没有匹配结果时您得到的空响应。

我发现导致此问题的另一件事是查询的编码不正确。一个容易犯的错误(根据经验)是+在查询中有符号,然后对其进行编码。这对+as 进行编码,%3A而您想要的是每个查询词之间的空格。然后将空间编码为+。犯这个编码错误也会导致相同的权限/未找到错误。

我很感激这对你来说可能有点晚了,但希望它可以帮助其他人。

于 2021-10-10T21:36:01.143 回答