python config_error ai_generated true

fastapi.routing.APIRoute: Route order conflict: /items/{item_id} conflicts with /items/new

ID: python/fastapi-route-order-conflict

Also available as: JSON · Markdown · 中文
80%Fix Rate
88%Confidence
0Evidence
2024-03-08First Seen

Version Compatibility

VersionStatusIntroducedDeprecatedNotes
3.x active

Root Cause

FastAPI 中动态路由和静态路由顺序不当,导致动态路由捕获了静态路径。

generic

中文

FastAPI 中动态路由和静态路由顺序不当,导致动态路由捕获了静态路径。

Workarounds

  1. 95% success
    @app.get('/items/new')
    async def new_item(): ...
    @app.get('/items/{item_id}')
    async def get_item(item_id: int): ...
  2. 90% success
    @app.get('/items/{item_id:\\d+}')
    async def get_item(item_id: int): ...

Dead Ends

Common approaches that don't work:

  1. 50% fail

    如果业务需要这两个路径,忽略会导致功能缺失。

  2. 60% fail

    FastAPI 按定义顺序匹配,交换后可能仍冲突。