如何使用 github-flask 为 {+path} 提供 URL 参数?

How to, provide URL parameters using github-flask for {+path}?

首先,我一共n00b到Python。我正在使用 github-flask,显然是 flask,从 GitHub API 中提取数据。我正在尝试使用 contents_url 并检索文件。来自 GitHub API 的 URL 类似于:

// json
{
    ...
    "contents_url": "https://api.github.com/repos/<org_name>/<repo_name>/contents/{+path}"
    ...
}

... 当我尝试将其提供给 github-flask 实例时,我得到一个 TypeError,"TypeError: request() got an unexpected keyword argument 'path'" 使用:

# python
contents = github.get(repo['contents_url'], path='.gitignore')

我很确定我遗漏了一些简单的东西。我不必求助于字符串操作,对吗?

Python推荐的字符串插值是.format方法。您的代码只需进行一些小的更改即可使用:

contents = github.get(repo['contents_url'].format(path='.gitignore'))

但您还必须稍微更改 contents_url

https://api.github.com/repos/<org_name>/<repo_name>/contents/{path}

请注意 - .format 基于大括号进行插值,因此需要转义任何文字大括号。此处提供更多信息:https://docs.python.org/3/library/string.html#formatstrings


编辑:正如您在下面的评论中提到的,URL 直接来自 GitHub 的 API,您不能't/shouldn 更改它.事实证明他们使用的是我在下面建议的 RFC 6570 URL templates (see https://developer.github.com/v3/#hypermedia). If you use the uritemplate 库,代码如下所示:

from uritemplate import expand

# ...

contents = github.get(expand(repo['contents_url'], {'path': '.gitignore'}))