成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

路徑參數和查詢參數同名?這個坑 FastAPI 里你得避!

開發
在使用 FastAPI 編寫接口時,你有沒有遇到過這樣的需求:接口路徑中帶有 item_id,但前端也傳了一個同名的查詢參數 item_id?

在使用 FastAPI 編寫接口時,你有沒有遇到過這樣的需求:

接口路徑中帶有 item_id,但前端也傳了一個同名的查詢參數 item_id?

例如,請求是這樣的:

GET /items/123?item_id=abc

乍一看沒啥問題,路徑參數是 123,查詢參數是 abc,看著分工明確,但你一寫代碼就報錯了!

典型錯誤寫法

from fastapi import FastAPI, Query

app = FastAPI()

@app.get("/items/{item_id}")
async def read_item(item_id: str, item_id: str = Query(...)):
    return {"item_id": item_id}

運行后 FastAPI 報錯:

SyntaxError: duplicate argument 'item_id' in function definition

原因很簡單:Python 函數參數不能重復命名。

正確寫法一:使用別名 alias 來區分

FastAPI 提供了 alias 參數來幫你實現“查詢參數的字段名和接收變量名不同”的功能。

from fastapi import FastAPI, Query

app = FastAPI()

@app.get("/items/{item_id}")
async def read_item(
    item_id: str,  # 路徑參數
    q: str = Query(None, alias="item_id")  # 查詢參數:仍叫 item_id,但接收為 q
):
    return {
        "path_param": item_id,
        "query_param": q
    }

測試訪問:

GET /items/123?item_id=abc

返回結果:

{
  "path_param": "123",
  "query_param": "abc"
}

完美分離!

正確寫法二:直接改查詢參數名

如果你對參數命名沒有執念,可以直接改掉查詢參數的名字。

@app.get("/items/{item_id}")
async def read_item(item_id: str, filter_id: str = Query(None)):
    return {
        "path_id": item_id,
        "query_filter_id": filter_id
    }

然后前端傳參:

GET /items/123?filter_id=abc

這樣也可以避免沖突。

實戰建議

(1) 路徑參數優先遵循 REST 設計,保持不變

如 /users/{user_id}/posts/{post_id} 是很常見的路徑設計

(2) 查詢參數可以靈活重命名

使用 alias 保持兼容性,又能避免變量名沖突

(3) 注意 Path / Query / Body 等參數的接收優先級不同

為什么這個細節值得說?

通過掌握 alias 的用法,你可以:

  • 兼容前后端已有設計
  • 避免內部變量名沖突
  • 寫出結構清晰、功能明確的接口邏輯
責任編輯:趙寧寧 來源: Ssoul肥魚
相關推薦

2025-04-07 11:00:00

FastAPI路徑參數接口

2019-02-12 15:07:42

屏幕參數PC

2020-08-26 07:37:25

Nacos微服務SpringBoot

2017-08-08 14:54:54

機器學習模型參數超參數

2025-05-16 09:16:43

2020-06-12 11:03:22

Python開發工具

2021-04-18 07:09:50

工具類異步編程

2022-06-06 12:01:28

VueRouter 4created

2018-02-23 16:42:36

游戲本表面參數

2024-04-24 13:45:00

2024-04-03 12:30:00

C++開發

2025-04-25 04:00:00

低代碼組件化元數據架構

2021-02-26 00:46:11

CIO數據決策數字化轉型

2025-05-06 08:21:35

2021-02-22 17:00:31

Service Mes微服務開發

2022-03-04 18:11:16

信服云

2023-05-24 10:06:42

多云實踐避坑

2021-05-07 21:53:44

Python 程序pyinstaller

2021-05-08 12:30:03

Pythonexe代碼

2018-09-05 11:51:55

數據庫NoSQLMongoDB
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲成人网在线播放 | 久久综合九色综合欧美狠狠 | 亚洲欧美在线一区 | 天天操操 | a久久久久久 | 久久成人精品 | 欧美国产日韩精品 | 免费的日批视频 | 在线一区二区三区 | 99精品欧美一区二区蜜桃免费 | 在线国产视频 | 国产成人综合在线 | 欧美成人精品一区二区男人看 | 日韩欧美国产精品 | 日韩欧美亚洲 | 午夜视频免费在线观看 | 久久99精品久久久久久国产越南 | 天天操天天拍 | 欧美日产国产成人免费图片 | 在线播放日韩 | 请别相信他免费喜剧电影在线观看 | 日韩中文电影 | 亚洲欧美另类在线观看 | 亚洲精品久久久久中文字幕二区 | 国产天堂| 在线观看中文字幕 | 欧美日日 | 日韩欧美视频免费在线观看 | 围产精品久久久久久久 | 亚洲狠狠丁香婷婷综合久久久 | 国产伦精品一区二区三区四区视频 | 中文字幕在线三区 | 黄色视频a级毛片 | 精品成人免费一区二区在线播放 | 国产午夜三级一区二区三 | 久久久久香蕉视频 | 91综合网 | 欧美日韩18| 欧美日韩亚洲视频 | 国产精品久久久久久久免费观看 | 免费看片在线播放 |