0

我需要使用进行 cURL 调用的 API。此处显示的 API:https ://www.pivotaltracker.com/help/api/rest/v5 。我在 Python 2.7 中编码并下载了 Requests 模块以用于 cURL 调用,但是我不确定如何执行此操作。这是我到目前为止所拥有的:

import requests

username = 'my_username'
password = 'my_password'
url = 'https://www.pivotaltracker.com/n/projects/my_project_number'

r = requests.get(url, auth=(username, password))

现在我有了响应 r,我该如何处理它来进行 cURL 调用以使用 API 函数,例如 GET /projects/{project_id}/epics/{epic_id} 函数。此函数的 cURL 调用是:

export TOKEN='your Pivotal Tracker API token'
export PROJECT_ID=99

curl -X GET -H "X-TrackerToken: $TOKEN" "https://www.pivotaltracker.com/services/v5/projects/$PROJECT_ID/epics/4"

感谢您的任何帮助,您可以提供!

编辑(感谢@Rob Watts)现在这是我的代码:

import requests

username = 'my_username'
password = 'my_password'
url = 'https://www.pivotaltracker.com/services/v5/me'

r = requests.get(url, auth=(username, password))
response_json = r.json()
token = response_json['api_token']

project_id = 'my_project_id'
url = 'https://www.pivotaltracker.com/services/v5/projects/{}/epics/1'

r = requests.get(url.format(project_id), headers={'X-TrackerToken':token})

print r.text

但它仍然无法正常工作。这是输出:

{
  "code": "unfound_resource",
  "kind": "error",
  "error": "The object you tried to access could not be found.  It may have been removed by another user, you may be using the ID of another object type, or you may be trying to access a sub-resource at the wrong point in a tree."
}

但是根据文档,我希望是这样的:

{
    "created_at": "2014-08-26T12:00:00Z",
    "description": "Identify the systems and eliminate the rebel scum.",
    "id": 1,
    ...
}
4

1 回答 1

5

看起来您应该进行的第一个调用是到“/me”端点,然后从响应中提取 API 令牌:

import requests

username = 'my_username'
password = 'my_password'
url = 'https://www.pivotaltracker.com/services/v5/me'

r = requests.get(url, auth=(username, password))
response_json = r.json()
token = response_json['api_token']

除了从该端点获取 API 令牌之外,您还可以获取其他一些东西。查看该端点的文档,看看是否还有其他需要。

获得 API 令牌后,所有其他调用都将相当简单。例如:

project_id = 'your_project_id' # could get this from the previous response
r = requests.get('https://www.pivotaltracker.com/services/v5/projects/{}/epics/4'.format(project_id), headers={'X-TrackerToken':token})

我将解释他们在这个例子中使用的 cURL 调用的各个部分以及它们是如何翻译的:

export VARNAME

设置一个变量供 cURL 调用使用。你看到$VARNAME的地方就是变量被使用的地方。

-X GET

我不知道他们为什么包括这个。这只是指定使用 GET,这是 cURL 的默认值。使用requests.get可以解决这个问题。但是,对于那些有-X POST,你会使用requests.post等。

-H "X-TrackerToken: $TOKEN"

这指定了一个标题。对于请求,我们使用headers关键字参数 - headers={key:value}。在这个具体的例子中,我们有headers={'X-TrackerToken':token}.

"https://..."

网址。这是第一个论点。$PROJECT_ID可以使用format字符串方法插入变量(如您的示例中)。

于 2014-09-11T22:04:29.117 回答