使用MongoDB和FastAPI构建高效API
from fastapi import FastAPI
from pydantic import BaseModel
from typing import Optional
from motor.motor_asyncio import AsyncIOMotorClient
app = FastAPI()
# 连接到MongoDB
client = AsyncIOMotorClient("mongodb://localhost:27017")
database = client["fastapi"]
items = database["items"]
# 定义Item模型
class Item(BaseModel):
title: str
description: Optional[str] = None
price: float
tax: Optional[float] = None
@app.on_event("startup")
async def startup():
await client.motor_open()
@app.on_event("shutdown")
async def shutdown():
await client.motor_close()
@app.post("/items/")
async def create_item(item: Item):
item_dict = item.dict()
await items.insert_one(item_dict)
return item_dict
@app.get("/items/")
async def read_items():
items_list = []
async for item in items.find():
items_list.append(item)
return items_list
@app.get("/items/{item_id}")
async def read_item(item_id):
item = await items.find_one({"_id": item_id})
if item is None:
return {"item_id": item_id, "detail": "Item not found"}
return item
这段代码示例展示了如何使用FastAPI和Motor(一个异步MongoDB客户端)来创建和管理Items。在这个简化的API中,我们定义了创建新Item、读取所有Items和读取特定Item的路由。代码中使用了异步的方法来处理数据库操作,这是构建高效API的关键。
评论已关闭