如下:
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