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

如何在FastAPI的GET端点中传递URL作为参数?

解决FastAPI路径参数含斜杠导致的404问题

问题根源在于FastAPI默认将路径中的/视为路由分隔符,即使传递编码后的%2F,服务器解码后仍会把它当作路径分隔符,导致路由匹配失败返回404。

以下是两种可行的解决方案:

方案一:使用路径转换器path

修改路由定义,给参数添加path转换器,允许参数包含斜杠:

@app.get("/Datos/{CI:path}")
async def read_CI(CI: str):
    return {"CI_Datos": CI}

调用时需要将目标URL完整编码后传递,示例curl命令:

# 传递编码后的目标URL
curl -X GET 'http://127.0.0.1:8000/Datos/https%3A%2F%2Fstore.epicgames.com%2Fes-ES%2Fp%2Fdead-island-2--gold-edition' -H 'accept: application/json'

# 或让curl自动编码参数
curl -G 'http://127.0.0.1:8000/Datos/' --data-urlencode 'CI=https://store.epicgames.com/es-ES/p/dead-island-2--gold-edition' -H 'accept: application/json'

方案二:改用查询参数传递URL

将URL作为查询参数传入,避免路径分隔符的冲突:

修改路由为:

@app.get("/Datos/")
async def read_CI(CI: str):
    return {"CI_Datos": CI}

对应的curl命令:

curl -X GET 'http://127.0.0.1:8000/Datos/?CI=https://store.epicgames.com/es-ES/p/dead-island-2--gold-edition' -H 'accept: application/json'

两种方案对比

  • 路径转换器:保持API的路径式风格,但需要客户端正确编码特殊字符。
  • 查询参数:实现更简单,无需复杂编码,适合参数本身是URL这类含大量特殊字符的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 04:48:28