Недавнее обновление нашей среды Zabbix сломало некоторые предыдущие сценарии, написанные кем-то более продвинутым, чем я, и я в настоящее время застрял, пытаясь работать с возвращенным значением.
Я начинаю с достаточно простогоВызов API, который возвращает следующий dict:
webscenario = {
u'httptestid': u'254',
u'steps': [
{
u'query_fields': [],
u'name': u'GET Alert',
u'no': u'1',
u'url': u'http://{HOST.DNS}/{API}',
u'follow_redirects': u'1',
u'variables': []
u'required': u'aries',
u'posts': u'',
u'retrieve_mode': u'0',
u'httpstepid': u'700',
u'headers': [],
u'post_type': u'0',
u'timeout': u'15s',
u'status_codes': u'200',
u'httptestid': u'254'
}
],
u'name': u'Alerts API',
u'headers': [
{
u'name': u'Content-Type',
u'value': u'application/json'
}
]
}
Цель состоит в том, чтобы перестроить заголовки для автоматической отправки обновлений с использованием данных, возвращенных в приведенном выше вызове API.
headers_dict = dict()
headers = webscenario.get("headers")
for h in str(headers).splitlines():
headers_dict.update({h.split(':')[1].strip(): h.split(':')[1].strip())})
print headers_dict
Первоначально это было записано как headers.splitlines()
, и это привело к появлению некоторых ошибок (например, AttributeError: 'list' object has no attribute 'splitlines'
).Некоторые гуглили, и казалось, что добавление строкового идентификатора решило это исключение.Но теперь я сталкиваюсь с проблемами форматирования для заголовка, и я полностью застрял.
Вывод, который я получаю для заголовков, - это словарь списка (словарь-список?):
<type 'list'>: [{u'name': u'Content-Type', u'value': u'application/json'}]
Мне нужно создать следующий словарь:
{Content-Type: application/json}
За исключением Unicode-нотации, я могу работать над этой "проблемой" (если она вообще есть), как только смогу ее найтичто мне нужно.