编写一个高级点得FastAPI
时间: 2023-09-13 15:10:21 浏览: 49
当然,我可以为您提供一个稍微复杂一的 FastAPI 示例代码,以展示一些更高级的功能。以下是一个示例:
```python
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
app = FastAPI()
# 模拟数据库的数据
db = []
# 定义数据模型
class Item(BaseModel):
id: int
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():
return db
# 获取单个商品
@app.get("/items/{item_id}")
def get_item(item_id: int):
for item in db:
if item.id == item_id:
return item
raise HTTPException(status_code=404, detail="Item not found")
# 更新商品
@app.put("/items/{item_id}")
def update_item(item_id: int, item: Item):
for i in range(len(db)):
if db[i].id == item_id:
db[i] = item
return {"message": "Item updated successfully"}
raise HTTPException(status_code=404, detail="Item not found")
# 删除商品
@app.delete("/items/{item_id}")
def delete_item(item_id: int):
for i in range(len(db)):
if db[i].id == item_id:
db.pop(i)
return {"message": "Item deleted successfully"}
raise HTTPException(status_code=404, detail="Item not found")
```
在这个示例中,我们引入了 `BaseModel` 类来定义数据模型 `Item`,并使用装饰器 `@app.post()`、`@app.get()`、`@app.put()` 和 `@app.delete()` 来创建了对应的 RESTful API 路由。
我们使用一个简单的列表 `db` 来模拟数据库,并在相应的路由函数中进行数据的增删改查操作。如果某个操作无法找到对应的商品,则抛出一个自定义的 `HTTPException` 异常。
这个示例展示了一些常见的 FastAPI 功能,如请求方法、路径参数、请求体参数、异常处理等。您可以根据您的需求进一步扩展和优化这个示例。希望对您有帮助!