作者:纯果多肽-小芳 | 来源:互联网 | 2023-05-19 13:49
我正在构建一个通过github API跟踪一些github repos的应用程序.当我手动移动或重命名我的应用程序正在跟踪的项目(在github上)时,我失去了它(当我调用旧的api url时获得404).我注意到当我通过浏览器导航到我的旧项目URL时,我得到301并被重定向到正确的页面.有没有一种简单的方法可以通过api找到项目的新位置?也许通过"id"属性或其他东西搜索项目?谢谢!
示例:old:github.com/api/v3/repos/group/app1重命名为:github.com/api/v3/repos/group/app2
当我打电话给github.com/api/v3/repos/group/app2时,当我导航到github.com/group/app1时,我收到了404.我收到301并被重定向到github.com/group/app2
干杯.
1> O-I..:
我遇到了这个问题,并且能够从Github支持获得一些非常有用的信息.
目前,API不会像存储库或用户重命名那样重定向github.com
,但截至2015年4月17日,您可以预览存储库重定向.
Take 6to5/6to5
,改名为babel/babel
,作为一个例子.如您所知,请求https://api.github.com/repos/6to5/6to5
将返回404,但我们可以通过传递预览即将到来的回购重定向功能application/vnd.github.quicksilver-preview+json
作为Accept
标题:
$ curl -i -H "Accept: application/vnd.github.quicksilver-preview+json" https://api.github.com/repos/6to5/6to5
这将返回301和一个带有url
键的响应,该键的值是我们要查找的repo的链接:
{
"message": "Moved Permanently",
"url": "https://api.github.com/repositories/24560307",
"documentation_url": "https://developer.github.com/v3/#http-redirects"
}
或者,您可以使用唯一id
属性(永不更改)来跟踪存储库(或用户),而不管名称更改如何.
我们再以babel/babel
née 6to5/6to5
为例.它的回购id
是24560307
.您可以使用它来调用/repositories/:id
端点(例如https://api.github.com/repositories/24560307
),并保证只要它仍然存在就获得该repo.
以下是我与GitHub支持的交换记录,供参考:
检测重命名的仓库
你好.
有没有办法使用Github API检测重命名的存储库?
例如,最近将6to5/6to5重命名为babel/babel.Running curl -i https://github.com/6to5/6to5
返回301,其中Location字段指向新位置.但是,运行curl -i https://api.github.com/repos/6to5/6to5
返回404.
反正是否有API获取该位置字段?如果没有,那么使用不使用API的HEAD请求是一种有效的解决方法,还是有更好的方法来实现我的目标?我正在尝试在codetriage/codetriage上解决这个问题(https://github.com/codetriage/codetriage/issues/228).
感谢您提供的任何帮助.
一切顺利,OI
嗨,OI,
你是对的 - API不会像github.com那样在存储库或用户名重命名上重定向.这可能是我们将来会提供的东西(我同意它会有用),但我不能对此做出任何承诺.感谢您表达兴趣!
目前,有一种方法可以处理API脚本和应用程序中的重命名 - 而不是使用存储库的名称来发出API请求,您可以使用存储库的ID(在重命名存储库时不会更改或转移).
例如,github/linguist的ID是1725199:
https://api.github.com/repos/github/linguist
现在您知道了,您可以通过ID获取存储库:
https://api.github.com/repositories/1725199
如果您没有跟踪存储库的ID,而您拥有的只是以前的名称,那么向github.com发送HEAD请求以查看您将被重定向的位置是我目前唯一可以想到的解决方法.
希望这有帮助,如果您有任何其他问题,请告诉我们.
干杯,伊万
嗨,OI,
我想您可能有兴趣知道我们很快会在API中为重命名的存储库提供重定向.您现在可以预览重定向功能,我们将在接下来的几个月内为所有请求启用它.您可以在今天的帖子https://developer.github.com上阅读更多相关信息:
https://developer.github.com/changes/2015-04-17-preview-repository-redirects/
如果您尝试一下,我们很乐意就您的功能是否满足您的需求提供反馈.
杰森,一切顺利