Я пытаюсь написать некоторый код на Python для взаимодействия с API New Relic. Я использую модуль запросов. По большей части я был успешным, но у меня проблемы с одним вызовом API. Их документация представляет вызов с помощью команды curl:
https://docs.newrelic.com/docs/alerts/rest-api-alerts/new-relic-alerts-rest-api/rest-api-calls-new-relic-alerts
(в разделе «Обновление каналов уведомлений, связанных с политиками»)
curl -X PUT 'https://api.newrelic.com/v2/alerts_policy_channels.json' \
-H 'X-Api-Key:{admin_api_key}' -i \
-H 'Content-Type: application/json' \
-G -d 'policy_id=policy_id&channel_ids=channel_id'
Моя главная проблема в том, что мне неясно, как перевести -G на python с помощью библиотеки ответов. Я даже не совсем уверен, что понимаю, что делает этот флаг, похоже, он делает дополнительный запрос get в дополнение к исходному PUT?
Я использовал этот конвертер, который работал с большинством вызовов curl, с которыми я работал, но не с этим.
https://curl.trillworks.com/
Это то, что генерируется на основе приведенной выше команды curl (которая не работает):
import requests
headers = {
'X-Api-Key': '{admin_api_key}',
'Content-Type': 'application/json',
}
data = {
'policy_id': 'policy_id',
'channel_ids': 'channel_id'
}
response = requests.put('https://api.newrelic.com/v2/alerts_policy_channels.json', headers=headers, data=data)
Это в основном тот же код, только в функции, где я на самом деле его использую:
def set_alert_policy_notification_channel(admin_api_key, policy_id, notification_channel_id):
headers = {
'X-Api-Key': admin_api_key,
'Content-Type': 'application/json',
}
data = {
'policy_id': policy_id,
'channel_ids': notification_channel_id
}
response = requests.put('https://api.newrelic.com/v2/alerts_policy_channels.json', headers=headers, data=data)
logging.debug(response)
return response
Когда я звоню, я получаю 500 ошибок, возможно, потому что запрос сформирован неправильно:
2019-07-11 09: 35: 31,546 - ОТЛАДКА - Запуск нового HTTPS-соединения (1): api.newrelic.com:443
2019-07-11 09: 35: 32,046 - ОТЛАДКА - https://api.newrelic.com:443 "PUT /v2/alerts_policy_channels.json HTTP / 1.1" 500 Нет
2019-07-11 09: 35: 32,293 - ОТЛАДКА -