You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何使用字典传递URL参数正确调用API?

问题原因

你的第二段代码无法运行是两个核心写法错误导致的:

  • 你在URL里写的{symbols}、{base}是字符串占位符,requests库不会自动替换这类占位符,你也没有手动调用字符串格式化方法填充值
  • GET请求的URL查询参数不能通过data参数传递:data参数是用来传递POST/PUT等请求的请求体内容的,且你错误地把参数字典包裹在了列表里,格式本身也不对
正确写法

requests库专门提供了params参数用来传递URL查询参数,传普通字典即可,库会自动完成URL拼接、特殊字符编码的工作,不需要你手动在URL里写查询串或者占位符:

import requests

# 只写接口基础路径,不需要拼接?后面的查询内容
url = "https://api.apilayer.com/fixer/latest"

# 查询参数直接定义为普通字典,不要套列表
query_params = {
    "base": "USD",
    "symbols": "GBP"
}

headers = {
  "apikey": "*****"
}

# 通过params参数传递查询字典,GET请求可以直接用requests.get简写
response = requests.get(url, headers=headers, params=query_params)

status_code = response.status_code
result = response.text
print(result)
额外说明
  • 用params传参时,requests会自动对参数里的特殊字符(比如中文、&、=、空格等)做URL编码,比手动拼接URL的容错性、安全性高很多,完全避免拼接格式错误的问题
  • 如果你坚持要手动拼接URL(极度不推荐,仅作原理演示),需要手动调用字符串格式化方法填充占位符,且需要自己处理参数编码:
    # 不推荐写法,遇到特殊字符极易出错
    url = "https://api.apilayer.com/fixer/latest?symbols={symbols}&base={base}".format(symbols="GBP", base="USD")
    

内容的提问来源于stack exchange,提问作者corey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.02 07:57:26