2014-09-11 4 views
0

Мне нужно использовать API, который делает вызовы cURL. API, показанный здесь: https://www.pivotaltracker.com/help/api/rest/v5. Я кодирую в Python 2.7 и загружаю модуль Requests для использования для вызовов cURL, однако я не совсем уверен, как это сделать. Это то, что я до сих пор:Как использовать Запросы Модуль Python для создания завитущих вызовов

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)) 

Теперь, когда у меня есть ответ г, что мне делать с ним, чтобы сделать завиток вызовы для того, чтобы использовать функции API, такие как GET/проекты/{ 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" 

Спасибо за любую помощь, которую вы можете предоставить!

EDIT (благодаря @Rob Вт) Теперь это мой код:

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, 
    ... 
} 
+0

Убедитесь, что вы используете правильный идентификатор проекта. Кроме того, в общем случае, если последующий вопрос не может вписаться в комментарий, вы должны задать новый вопрос. –

+0

Я проверил, и мой project_id верен. Интересная вещь, которую я пробовал, заключалась в размещении этого URL-адреса в браузере: https://www.pivotaltracker.com/services/v5/projects/my_project_id/epics/1, но это тоже возвращало ту же ошибку – sbru

+1

Возможно, у вас нет эпического с id 1. Используйте/services/v5/projects/my_project_id/epics, чтобы получить существующие эпики. –

ответ

5

Похоже, первый вызов, вы должны сделать это в «/ меня» конечной точки, а затем вытащить фишку 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'] 

Вы можете получить некоторые другие вещи, кроме вашего токена с этой точкой. Взгляните на the documentation for that endpoint, чтобы узнать, есть ли что-нибудь еще, что вам понадобится.

После того, как вы получили свой токен 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 

Установить переменную для локонов вызова использовать. Где вы видите $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.

+0

спасибо за ответ. Если вы не возражаете, я хотел бы знать, как именно вы это преобразовали, например, как вы знали, чтобы положить токен в заголовок, а не идентификатор проекта, например. – sbru

+0

ОЧЕНЬ полезно! Спасибо. Я искал этот перевод в течение нескольких часов, поэтому еще раз спасибо. Последний вопрос, ключи для пар ключ: значение - это только строка перед символом ':'? Итак, для -H "X-TrackerToken: $ TOKEN" это будет «X-TrackerToken» – sbru

+0

Для этого «X-TrackerToken» является ключом, а токеном является значение. Я предполагаю, что на самом деле это не будет «ТОКЕН». –

Смежные вопросы