# 路径参数Path
from fastapi import FastAPI, Path
import uvicorn
import fastapi_cdn_host
app = FastAPI()
# 加上这个,不然docs界面打不开
fastapi_cdn_host.patch_docs(app)
@app.get("/items1/{item_id}")
def read_item1(item_id: int):
return {"item_id": item_id}
@app.get("/items2/{item_id}")
def read_item2(item_id: int = Path(...)):
return {"item_id": item_id}
@app.get("/items3/{item_id}")
def read_item3(item_id: int = Path(..., lt=100, gt=18)):
return {"item_id": item_id}
@app.get("/items4/{item_id}")
# def read_item4(item_id: str = Path(..., regex='a\d{2}')):
def read_item4(item_id: str = Path(..., pattern='a\d{2}')):
return {"item_id": item_id}
from enum import Enum
class ModelName(str, Enum):
alexnet = "alexnet"
resnet = 'resnet'
lenet = "lenet"
@app.get('/items5/{model}')
def read_item5(model: ModelName):
return {"model": model}
def validate(value):
if not value.startswith('P-'):
raise ValueError("必须以P-开头")
return value
from typing import Annotated
from pydantic import BeforeValidator
# 创建带验证的类型别名
Item = Annotated[str, BeforeValidator(validate)]
@app.get('/items6/{item_id}')
def read_item6(item_id: Item):
return {"item_id": item_id}
if __name__ == "__main__":
uvicorn.run('main09:app', host='127.0.0.1', port=8000, reload=True)
2、路径参数Path
最新推荐文章于 2025-12-06 22:07:37 发布
3万+

被折叠的 条评论
为什么被折叠?



