GET请求中的变量替换

时间:2018-07-14 17:35:20

标签: python-3.x python-3.6

我正在使用Web API来检索系统数据。有问题的行如下所示:

response = requests.get('https://api.company.com/api/v0/devices/[serial]/switchPorts', headers=headers)

[序列号]必须替换为我要查询的给定设备的有效序列号。

当我使用任何有效的序列号时,它都可以正常工作。

但是,我要查询数百个项目,所以我不想为每台设备手动更改[序列号]。

使用另一个提供的API,我生成了所有序列号的set() 命名为:serials()

我想说的是:

for serial in serials:
    response = requests.get('https://api.company.com/api/v0/devices/%var/switchPorts', headers=headers)

%var接收每个序列号,因此我可以循环访问序列列表。

是否有一种方法可以将[serial]替换为一个变量,该变量将在每次迭代时接收'serial'的当前值并运行该API调用?

2 个答案:

答案 0 :(得分:1)

使用str.format

例如:

for serial in serials:
    response = requests.get('https://api.company.com/api/v0/devices/{0}/switchPorts'.format(serial), headers=headers)

f-string

例如:

for serial in serials:
    response = requests.get(f'https://api.company.com/api/v0/devices/{serial}/switchPorts', headers=headers)

答案 1 :(得分:1)

我会提前构造字符串,然后将其传递给请求,如下所示:

for serial in serials:
  url = 'https://api.company.com/api/v0/devices/' + serial + '/switchPorts'
  response = requests.get(url, headers=headers)

我也喜欢在实际请求之前为任何网络请求创建url的做法。