(请原谅问题标题;很难总结这个问题。)
在 Facebook 上,你的like东西。在推特上,你们这些follow人。在 GitHub 上,您还可以看到follow人员、star存储库和要点。
所有这些情况都非常相似:这些连接是轻量级的,本身并不是真正的“资源”。例如,这三个 API 都没有公开此类连接的公共 ID。
这就提出了一个问题:公开用于创建/查询/删除这些连接的 API 的“最佳”(就 REST 而言)方法是什么?
Facebook 的做法 [ 1 ]:
GET /:id/likes查询某个对象的喜欢程度(更准确地说,喜欢该对象的用户)
POST /:id/likes喜欢某事(代表经过授权的用户;不需要请求正文)
DELETE /:id/likes不喜欢某些东西(代表经过授权的用户)
查询和创建是有意义的,但DELETE有点“非 RESTful”,因为您实际上并没有删除/:id/likes资源(喜欢该对象的用户数组)。
这种差异在另一种情况下也表现出来[ 2 ]:
GET /me/likes/:id询问你是否喜欢某事因此,查询连接是查询与创建或删除它完全不同的资源。
GitHub倾向于/me/likes/:id以下用户和明星存储库的风格[ 3 ]:
(请注意,GitHub/user代表经过身份验证的用户,如 Facebook 的/me。)
GET /user/starred/:owner/:repo用于查询您是否有一个已加星标的存储库(返回 204 或 404,两者都没有正文)
PUT /user/starred/:owner/:repo用于为回购加注星标(请求中不需要正文)
DELETE /user/starred/:owner/:repo用于取消仓库星标
这更加一致,但不幸的是,这将个体“明星”与群体分开: …
我正在尝试使用github api(通过githubot https://github.com/iangreenleaf/githubot)从拉取请求号获取拉取请求合并提交sha。
我能够得到正确的响应(例如此处的“获取单个拉取请求”下的示例:https : //developer.github.com/v3/pulls/),但是merge_commit_sha给了我这个错误:
fatal: bad object 304fc816f33f808080c9c87895eea2d66081d373
Run Code Online (Sandbox Code Playgroud)
当我在github上比较两个页面时,我在提交页面上看到了merge_commit_sha,但是在拉请求合并页面上看到了一个不同的提交。父母双方相同,但合并提交不同。从api调用返回的一个无效,但另一个让我通过以下方式还原请求请求的提交
git revert -m 1 commit_sha
Run Code Online (Sandbox Code Playgroud)
这是一些示例屏幕截图

因此,这引出了两个问题:-这两个提交sha之间有什么区别?为什么只有一个工作才能还原拉取请求?
谢谢。
我尝试在 GitHub 中获取我的组织中的所有用户。我可以获得用户,但我在分页方面遇到问题 - 我不知道需要浏览多少页。
curl -i -s -u "user:pass" 'https://api.github.com/orgs/:org/members?page=1&per_page=100'
Run Code Online (Sandbox Code Playgroud)
当然,我可以迭代所有页面,直到我的请求不会返回“0”,但我认为这不是一个好主意)
也许 GitHub 有标准方法来获取组织中的所有用户?
我已经通过github API创建了一个github存储库的fork.现在,稍后,我想将原始存储库中的任何更新提取到fork中.在我的用例中,这应该始终是一个快进.我已经读取了对原始存储库的访问权限并对fork进行了读写操作.
我想过可能会创建一个Pull Request然后接受(这两个都可以通过API完成),但是这会产生噪音(Pull Requests被创建和销毁)并且似乎不对.
有没有办法通过API做到这一点?
我想获取 GitHub 存储库的所有分支的列表(例如https://github.com/eternicode/bootstrap-datepicker),但是我无法找到如何使用octokit.net来做到这一点。
我还想要一个重命名的存储库,我不能只搜索存储库的名称。
有什么提示吗?
澄清:其余 api 在这里描述https://developer.github.com/v3/repos/forks/,但是如何使用 octokit.net 来做到这一点?
我目前正在使用GitHub API v3编写一个小项目.
我一直在根据repo包含的分支数进行计算.在没有请求列出该回购的所有分支的情况下,我似乎无法找到这样做的方法.需要请求repo的分支会增加不必要的运行时间,特别是在处理数百个repos时,每个repos包含数十个分支.
显然缺乏这样做的能力让我感到意外,因为通过这样做可以轻松获得一个非常类似的操作,获得组织的回购数量:
GET https://api.github.com/orgs/cloudify-cosmo,使用适当的GitHub身份验证凭据.public_repos和的字段total_private_repos那么,我错过了什么吗?是否有一种类似方便的方式(或任何方式)获得回购的分支数量而不必列出其分支?
我正在使用github api来获取文件的内容,但我还想知道文件的创建时间.有没有办法用github api获取这些信息?
我正在尝试编写一个小脚本,可以使用eslint输出对github PR进行评论.
问题是eslint给出了每个错误的绝对行号.但是github API想要相对于diff的行号.
来自github API文档:https://developer.github.com/v3/pulls/comments/#create-a-comment
要评论文件中的特定行,您需要首先确定差异中的位置.GitHub提供了一个application/vnd.github.v3.diff媒体类型,您可以在前面的请求中使用它来查看pull请求的diff.需要将diff解释为从文件中的行转换为diff中的位置.位置值是您要评论的文件中第一个"@@"hunk标题的行数.
"@@"行下方的行是位置1,下一行是位置2,依此类推.文件差异中的位置继续通过空白行和额外的空格来增加,直到达到新文件.
因此,如果我想在上面的图像中添加对第5行的新注释,那么我需要将12传递给API
我的问题是如何轻松地将eslint将在其错误消息中提供的新行号映射到github API所需的相对行号
我使用parse-diff将github API提供的diff转换为json对象
[{
"chunks": [{
"content": "@@ -,OLD_TOTAL_LINES +NEW_STARTING_LINE_NUMBER,NEW_TOTAL_LINES @@",
"changes": [
{
"type": STRING("normal"|"add"|"del"),
"normal": BOOLEAN,
"add": BOOLEAN,
"del": BOOLEAN,
"ln1": OLD_LINE_NUMBER,
"ln2": NEW_LINE_NUMBER,
"content": STRING,
"oldStart": NUMBER,
"oldLines": NUMBER,
"newStart": NUMBER,
"newLines": NUMBER
}
}]
}]
Run Code Online (Sandbox Code Playgroud)
我在考虑以下算法
NEW_STARTING_LINE_NUMBERto
开始创建一个新行号的数组NEW_STARTING_LINE_NUMBER+NEW_TOTAL_LINESnewStart从每个数字中减去并使其成为另一个数组relativeLineNumberstype==='del')增加相应的剩余relativeLineNumbers@@)减少相应的剩余relativeLineNumbers我正在使用打击命令在Github存储库上发布发行版:
curl -X POST -H "Authorization: token xxxxxxxxx" -d '{"tag_name": "test", "name":"release-0.0.1","body":"this is a test release"}' https://api.github.com/repos/xxxxxx
Run Code Online (Sandbox Code Playgroud)
我可以看到创建了一个新版本。但是下面有两个下载按钮:
Source code (zip)
Source code (tar.gz)
Run Code Online (Sandbox Code Playgroud)
没有源代码如何发布?
如果无法删除源代码附件,如何上传其他二进制文件?我试图Upload a release asset像这样使用API POST https://<upload_url>/repos/:owner/:repo/releases/:id/assets?name=foo.zip:,它成功返回,但是在Github发行选项卡上找不到二进制文件。
Github API是否提供一种简便的方法来向项目委员会添加请求请求或问题?
这是程序化的等效方式,即用户转到拉取请求并从侧边栏菜单中选择一个“项目”
注意:API似乎确实提供了一种向项目添加卡片的方法,但是我必须指定一个特定的项目列。我只想盲目添加项目,然后让自动化规则确定该列,类似于通过UI单击它。
谢谢!
github-api ×10
github ×4
git ×3
.net ×1
api ×1
c# ×1
eslint ×1
git-revert ×1
hubot ×1
octokit.net ×1
rest ×1
web-services ×1