FastAPI路径参数类型支持范围咨询:仅基础类型与path?
FastAPI路径参数类型关联的限制说明
FastAPI在路径装饰器的URL字符串中(如@app.get("/{a:XXX}")这种写法),仅支持以下内置路径转换器对应的类型:
- 基础类型:
int、float、str、bool - 特殊类型:
path(用于匹配包含斜杠的路径片段)
你遇到的AssertionError: Unknown path convertor 'UUID'错误,核心原因是FastAPI依赖的底层框架Starlette并未内置UUID类型的路径转换器,因此无法直接在URL的参数占位符里使用:UUID语法。
正确使用UUID类型路径参数的方式
无需在URL中指定转换器,直接在视图函数的参数上通过类型注解声明UUID即可,FastAPI会自动完成类型校验与转换:
from fastapi import FastAPI from uuid import UUID app = FastAPI() @app.get("/items/{item_id}") async def get_item(item_id: UUID): return {"item_id": item_id}
当请求路径中的item_id符合UUID格式时,会被自动解析为UUID对象;若格式不符合,FastAPI会直接返回422验证错误响应。
补充说明
FastAPI推荐优先使用类型注解来声明路径参数的类型,这种方式支持更多复杂类型(如datetime.datetime、Pydantic模型等),而路径装饰器中的:type写法仅适用于Starlette内置的有限转换器,并非FastAPI类型系统的主力用法。
内容的提问来源于stack exchange,提问作者user3103957
相关产品推荐
相关产品推荐

