成人免费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

2017-08-08 14:54:54

機器學習模型參數超參數

2020-08-26 07:37:25

Nacos微服務SpringBoot

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

游戲本表面參數

2025-04-25 04:00:00

低代碼組件化元數據架構

2024-04-24 13:45:00

2024-04-03 12:30:00

C++開發

2021-02-26 00:46:11

CIO數據決策數字化轉型

2022-03-04 18:11:16

信服云

2021-05-07 21:53:44

Python 程序pyinstaller

2023-05-24 10:06:42

多云實踐避坑

2021-02-22 17:00:31

Service Mes微服務開發

2021-05-08 12:30:03

Pythonexe代碼

2018-09-05 11:51:55

數據庫NoSQLMongoDB

2025-06-18 10:00:00

Redis事務Java
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 色综合网站| 中文字幕一区二区三区四区五区 | 成人免费一区二区三区视频网站 | 精品国产一区二区国模嫣然 | 爽爽免费视频 | 欧美精品一区二区三区在线四季 | 亚洲精品9999 | 日韩av一区在线观看 | av黄色在线播放 | 国产精品久久欧美久久一区 | 欧美激情精品久久久久 | 色久影院 | 伊人色综合久久久天天蜜桃 | 国产成人福利 | 免费99精品国产自在在线 | 国产在线一区二区三区 | 综合久久av | 亚洲视频一区二区三区 | 嫩草研究影院 | 在线中文字幕亚洲 | 欧美激情国产精品 | 91精品国产欧美一区二区 | 美国黄色毛片 | 日本一区二区三区精品视频 | 色呦呦在线| 欧美精品一区二区三区蜜桃视频 | 中文字幕视频在线观看 | 国产成人精品视频在线观看 | www中文字幕 | 成人福利视频 | 四虎影音| 天天射天天干 | 精品成人免费一区二区在线播放 | 日韩视频在线观看中文字幕 | 国产一区二区久久 | 亚洲欧美日韩高清 | 国产在线视频在线观看 | 免费视频中文字幕 | 久久成人免费观看 | 91麻豆精品国产91久久久久久 | 欧美亚洲国产成人 |