是否将值动态插入API请求



我正在编写一个API请求,查询OpenWeatherMap的API以获取天气数据。我使用一个city_id号码来提交一个世界上独一无二的地方的请求。一个成功的API查询如下:

r = requests.get('http://api.openweathermap.org/data/2.5/group?APPID=333de4e909a5ffe9bfa46f0f89cad105&id=4456703&units=imperial')

其中的关键部分是4456703,这是一个独特的城市_ID

我希望用户选择几个城市,然后我将通过JSON文件查看city_ID,然后将city_ID提供给API请求。

我可以通过硬编码添加多个城市ID。我还可以添加city_ID作为变量。但我不能弄清楚的是,如果用户随机选择了多个城市(可能多达20个(,我如何将其插入API请求中。我尝试过通过多次迭代添加列表和元组,比如。。。

#assume the user already chose 3 cities, city_ids are below
city_ids = [763942, 539671, 334596]
r = requests.get(f'http://api.openweathermap.org/data/2.5/groupAPPID=333de4e909a5ffe9bfa46f0f89cad105&id={city_ids}&units=imperial')

也许列表不是正确的数据类型

成功的代码看起来像。。。

r = requests.get(f'http://api.openweathermap.org/data/2.5/group?APPID=333de4e909a5ffe9bfa46f0f89cad105&id={city_id1},{city_id2},{city_id3}&units=imperial')

不过,正如我之前所说,用户可以选择3个城市或10个城市,因此该部分必须动态更新。

您可以使用一些字符串方法和列表综合将列表中的所有变量附加到单个字符串中,并将其格式化为API字符串,如下所示:

city_ids_list = [763942, 539671, 334596]
city_ids_string = ','.join([str(city) for city in city_ids_list]) # Would output "763942,539671,334596"
r = requests.get('http://api.openweathermap.org/data/2.5/group?APPID=333de4e909a5ffe9bfa46f0f89cad105&id={city_ids}&units=imperial'.format(city_ids=city_ids_string))

希望它能有所帮助,祝好运

最新更新