Fastapi 简单示例
简单示例
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
app = FastAPI()
# 模拟数据库
db = []
# 请求体模型
class Item(BaseModel):
name: str
price: float
# 创建商品
@app.post("/items/")
def create_item(item: Item):
db.append(item)
return {"message": "Item created successfully"}
# 获取所有商品
@app.get("/items/")
def get_items():
if not db:
raise HTTPException(status_code=404, detail="No items found")
return db
# 根据名称获取商品
@app.get("/items/{name}")
def get_item_by_name(name: str):
for item in db:
if item.name == name:
return item
raise HTTPException(status_code=404, detail="Item not found")
# 更新商品价格
@app.put("/items/{name}")
def update_item_price(name: str, price: float):
for item in db:
if item.name == name:
item.price = price
return {"message": "Item price updated"}
raise HTTPException(status_code=404, detail="Item not found")
# 删除商品
@app.delete("/items/{name}")
def delete_item(name: str):
for item in db:
if item.name == name:
db.remove(item)
return {"message": "Item deleted"}
raise HTTPException(status_code=404, detail="Item not found")
不需要数据库操作:
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
app = FastAPI()
# 请求体模型
class Item(BaseModel):
name: str
price: float
# 创建商品
@app.post("/items/")
def create_item(item: Item):
return {"message": "Item created successfully", "item": item}
# 获取所有商品
@app.get("/items/")
def get_items():
return {"message": "Get all items"}
# 根据名称获取商品
@app.get("/items/{name}")
def get_item_by_name(name: str):
return {"message": f"Get item by name: {name}"}
# 更新商品价格
@app.put("/items/{name}")
def update_item_price(name: str, price: float):
return {"message": f"Update item price: {price}"}
# 删除商品
@app.delete("/items/{name}")
def delete_item(name: str):
return {"message": f"Delete item: {name}"}
简单完整:
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
import uvicorn
app = FastAPI()
# 请求体模型
class Item(BaseModel):
name: str
price: float
# 创建商品
@app.post("/items/")
def create_item(item: Item):
return {"message": "Item created successfully", "item": item}
# 获取所有商品
@app.get("/items/")
def get_items():
return {"message": "Get all items"}
# 根据名称获取商品
@app.get("/items/{name}")
def get_item_by_name(name: str):
return {"message": f"Get item by name: {name}"}
# 更新商品价格
@app.put("/items/{name}")
def update_item_price(name: str, price: float):
return {"message": f"Update item price: {price}"}
# 删除商品
@app.delete("/items/{name}")
def delete_item(name: str):
return {"message": f"Delete item: {name}"}
if __name__ == "__main__":
uvicorn.run(app, host="localhost", port=8000)
License:
CC BY 4.0