代码之家  ›  专栏  ›  技术社区  ›  MarkS

GET请求内的变量替换

  •  0
  • MarkS  · 技术社区  · 7 年前

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

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

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

    当我使用任何有效的序列号时,它工作得非常好。

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

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

    我想说的是:

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

    其中%var接收每个序列号,这样我可以在循环中迭代序列列表。

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

    2 回复  |  直到 7 年前
        1
  •  1
  •   Rakesh    7 年前

    使用 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)
    
        2
  •  1
  •   codeWonderland    7 年前

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

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

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

    推荐文章