Python将变量传递到有效载荷400错误

时间:2020-08-14 17:53:16

标签: python http lambda

嗨,我正试图在python3.8(lambda)的for循环中循环一些值,以创建一些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”更改为实际上是im传入的变量,则会失败,并显示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)

我已经尝试过几乎可以想到的所有组合,包括转义/使用双单引号等,但是没有地方。

如何将变量从循环传递到此有效载荷中?

2 个答案:

答案 0 :(得分:0)

也许我只是没有得到它,但是为什么不简单地使用acc变量而不是在第一个示例中将其设为字符串呢?

accounts=['123', '12345']

for acc in accounts:
    http = urllib3.PoolManager()
    payload='{"key": "'+ acc +'","value":"apply","secured":"false"}'
    data = payload
...

答案 1 :(得分:0)

经过数小时的尝试,我才弄清楚了。 BitBucket不允许变量以数字开头。 当然可以,如果他们的文档建议这样做!