helloworld
from fastapi import FastAPI # 导入包
import uvicorn
app = FastAPI() # 实例化
@app.get("/") # 创建路径操作 常见操作:POST、GET、PUT、DELETE;少见:OPTIONS、HEAD、PATCH、TRACE
async def root():
return {"message": "Hello World"}
if __name__ == "__main__":
uvicorn.run(app, host="0.0.0.0", port=8000, loop="asyncio")
路径参数
from fastapi import FastAPI # 导入包
import uvicorn
app = FastAPI() # 实例化
@app.get("/items/{item_id}") # 路径参数
async def read_item(item_id: str): # 路径参数进行类型限定,具有数据校验的效果
return {"item_id": item_id}
# 有相对顺序
@app.get("/users/me")
async def read_user_me():
return {"user_id": "the current user"}
@app.get("/users/{user_id}")
async def read_user(user_id: str):
return {"user_id": user_id}
if __name__ == "__main__":
uvicorn.run(app, host="0.0.0.0", port=8000, loop="asyncio")
接收路径参数限定
from fastapi import FastAPI # 导入包
import uvicorn
app = FastAPI() # 实例化
# 接收路径操作,预先设定可能的有效参数值
from enum import Enum
class ModelName(str, Enum): # 创建具有固定值的雷属性,固定值为可用的有效值
alexnet = "alexnet"
resnet = "resnet"
lenet = "lenet"
@app.get("/models/{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": # 获取实际的值比较 或ModelName.lenet.Value
return {"model_name": model_name, "message": "LeCNN all the images"}
return {"model_name": model_name, "message": "Have some residuals"}
if __name__ == "__main__":
uvicorn.run(app, host="0.0.0.0", port=8000, loop="asyncio")
带路径的路径参数
from fastapi import