#python #http #lambda
#python #http #лямбда
Вопрос:
Привет, я пытаюсь перебрать некоторые значения в цикле for в python3.8 (lambda), чтобы создать несколько переменных bitbucket pipline. Для начала, просто чтобы доказать, что мой код работает, я запускаю следующее, которое проходит цикл из 2 значений, создает переменную с именем «acc» и выдает 201 ответ, а затем во второй раз в цикле переменная acc уже существует, поэтому она возвращает 409, что отлично, поскольку я ожидаю, что
accounts=['123', '12345']
for acc in accounts:
http = urllib3.PoolManager()
payload='{"key": "acc","value":"apply","secured":"false"}'
data = payload
url = 'https://api.bitbucket.org/2.0/repositories/<workspace>/<project>/pipelines_config/variables/'
headers = urllib3.util.make_headers(basic_auth='user' ':' 'Password')
print(headers)
headers['Content-type'] = 'application/json'
print(headers)
r = http.request('POST', url, headers=headers, body=data)
теперь, если я изменю «acc» в полезной нагрузке, чтобы она фактически была переменной, которую я передаю, она завершается ошибкой 400.
accounts=['123', '12345']
for **acc** in accounts:
http = urllib3.PoolManager()
payload='{"key": "' acc '","value":"apply","secured":"false"}'
data = payload
url = 'https://api.bitbucket.org/2.0/repositories/<workspace>/<project>/pipelines_config/variables/'
headers = urllib3.util.make_headers(basic_auth='user' ':' 'Password')
print(headers)
headers['Content-type'] = 'application/json'
print(headers)
r = http.request('POST', url, headers=headers, body=data)
я перепробовал почти все комбинации, о которых могу подумать, включая экранирование / использование двойных одинарных кавычек и т.д., Но нигде не получаю.
как я могу передать переменную из цикла в эту полезную нагрузку?
Ответ №1:
Может быть, я просто не понимаю, но почему бы вам просто не использовать свою переменную acc вместо того, чтобы превращать ее в строку в вашем первом примере?
accounts=['123', '12345']
for acc in accounts:
http = urllib3.PoolManager()
payload='{"key": "' acc '","value":"apply","secured":"false"}'
data = payload
...
Комментарии:
1. спасибо за ответ. Попытка передать var с использованием «‘ acc ‘» приводит к ошибке 400 ниже 400 {‘error’: {‘message’: ‘Неверный запрос’, ‘detail’: ‘Тело запроса содержит недопустимые свойства’, ‘data’: {‘key’: ‘variable-service.request.validation-ошибка’, ‘arguments’: {}}}} Идентификатор КОНЕЧНОГО запроса: 880f3a2e-239d-4f0a-a3b6- 9dce55f47777
Ответ №2:
Я только что понял это после нескольких часов попыток. BitBucket не позволяет переменным начинаться с чисел. было бы неплохо, если бы в их документации это, конечно , было указано !