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

调用带path parameters的GSA Perdiem API传参异常求助

问题根因

你的代码有三个明显错误,直接导致请求无法命中正确接口:

  • 请求方法错误:OpenAPI文档明确标注该接口仅接受GET请求,你用requests.post()发POST请求,根本不会被接口的GET路由处理。
  • 路径参数传参逻辑错误:zip和year是路径参数,必须直接替换URL路径里的{zip}、{year}占位符。params参数是用来传URL末尾?后面拼接的查询参数的,不会自动替换路径里的占位符,你实际发请求的时候URL里还留着{zip}和{year}的原始字符串,自然匹配不到正确的资源路径。
  • 实际请求地址不符合规则:你当前的写法最终请求的URL是https://api.gsa.gov/travel/perdiem/v2/rates/zip/{zip}/year/{year}?zip=22041&year=2022,和接口要求的路径格式完全不符,返回空rates数组是正常结果。
修正后的代码
import requests

# 定义URL模板
url_template = "https://api.gsa.gov/travel/perdiem/v2/rates/zip/{zip}/year/{year}"
api_key = "替换为你自己的API密钥"

headers = {
    "X-API-KEY": api_key
}

# 替换路径占位符,生成实际请求地址
request_url = url_template.format(zip=22041, year="2022")
# 用GET方法发起请求,路径参数已经拼接完成,不需要传params
resp = requests.get(request_url, headers=headers)
print(resp.json())
调试建议

后续调这类接口时,可以先打印resp.url查看实际发出的请求完整地址,和文档要求的格式做对比,能快速定位路径拼接、参数传错位置的问题。只有OpenAPI文档里标注in: "query"的参数,才需要放到params字典里传递。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 22:54:20