2、路径参数Path

# 路径参数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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值