如何将URL中的日期参数替换为变量以调用API?
问题解决:正确拼接带日期变量的API URL
你的问题出在URL拼接的语法错误上,直接把f"{x}"写进URL里会让API收到无效的参数格式,自然返回不了正确响应。下面给你两种靠谱的解决方法:
方法1:直接用f-string拼接(简单直观)
先把日期参数定义好,然后用Python的f-string语法正确拼接整个URL:
# 方式A:直接定义完整参数键值对 x = "startDate=2023-06-01" y = "endDate=2023-06-30" api_key = "your_actual_api_key" url = f"/energy?{x}&{y}&api_key={api_key}" # 方式B:拆分日期值和参数名(更灵活,方便后续修改日期) start_date = "2023-06-01" end_date = "2023-06-30" api_key = "your_actual_api_key" url = f"/energy?startDate={start_date}&endDate={end_date}&api_key={api_key}"
方法2:用urllib.parse.urlencode(规范不易错)
如果参数较多或者需要处理特殊字符编码,用Python标准库的urlencode更稳妥:
from urllib.parse import urlencode # 把所有参数放进字典 params = { "startDate": "2023-06-01", "endDate": "2023-06-30", "api_key": "your_actual_api_key" } # 自动拼接成符合格式的参数串 url = f"/energy?{urlencode(params)}"
为什么原来的写法失效?
你之前写的/energy?f"{x}"&f"{y}"&api_key/会生成类似这样的错误URL:/energy?f"startDate=2023-06-01"&f"endDate=2023-06-30"&api_key/
API会把f"startDate=2023-06-01"当成一个完整的参数名,根本识别不了正确的startDate参数,所以返回不了响应。
内容的提问来源于stack exchange,提问作者MoonBeam
相关产品推荐
相关产品推荐

