首页 > 编程语言 >Python & FastAPI , 路径中带参数

Python & FastAPI , 路径中带参数

时间:2024-05-26 12:34:11浏览次数:22  
标签:中带 name Python FastAPI item path model id

如下:
from fastapi import FastAPI
app = FastAPI()
@app.get("/items/{item_id}")
async def read_item(item_id):
    return {"item_id": item_id}

路径参数item_id的值将作为参数item_id传递给函数,
输入http://127.0.0.1:8000/items/foo,foo为传入的参数,则其响应如下:
{"item_id" : "foo"}
通常用户可以通过传递一个参数入服务器,服务器通过传入的参数进行相关处理后,再返回给客户端。

当然,可以对转入的参数进行类型限定:
from fastapi import FastAPI
app = FastAPI()
@app.get("/items/{item_id}")
async def read_item(item_id: int): #类型为int
    return {"item_id": item_id}

如果使用浏览器http://127.0.0.1:8000/items/foo,你会看到一个很好的HTTP错误:
{
    "detail": [
        {
            "loc": [
                "path",
                "item_id"
            ],
            "msg": "value is not a valid integer",
            "type": "type_error.integer"
        }
    ]
}
因为参数item_id的值为”foo“,而不是int。
这种带数据类型的参数,FastAPI能够提供数据验证

所有的数据验证都是在Pydantic的框架下执行的。

使用枚举Enum类型:
from enum import Enum
from fastapi import FastAPI

class ModelName(str, Enum):
    alexnet = "alexnet"
    resnet = "resnet"
    lenet = "lenet"

app = FastAPI()
@app.get("/model/{model_name}")
async def get_model(model_name: ModelName):
    if model_name == ModelName.alexnet:
        return {"model_name": model_name, "message": "Deep Learning FTW!"}
    if model_name.value == "lenet":
        return {"model_name": model_name, "message": "LeCNN all the images"}
    return {"model_name": model_name, "message": "Have some residuals"}

可以使用ModelName.lenet.value访问值“lenet”。

路径参数包含路径
假设您有一个带有path /files/{file_path}的路径操作。
但是您需要file_path本身来包含一个路径,比如home/johndoe/myfile.txt。
因此,该文件的URL类似于:/files/home/johndoe/myfile.txt。

from fastapi import FastAPI
app = FastAPI()
@app.get("/files/{file_path:path}")
async def read_file(file_path: str):
    return {"file_path": file_path}

您可能需要该参数来包含/home/johndoe/myfile.txt,前斜杠(/)。
在这种情况下,URL输入应该是:
/files//home/johndoe/myfile.txt,即在files和home之间使用双斜杠(//)。

标签:中带,name,Python,FastAPI,item,path,model,id
From: https://blog.csdn.net/zhouwuhua/article/details/139213178

相关文章