Fastapi 简明教程
FastAPI - CRUD Operations
REST 架构使用用于资源操作的 HTTP 动作或方法。POST、GET、PUT 和 DELETE 方法分别执行 CREATE、READ、UPDATE 和 DELETE 操作。
在以下示例中,我们将使用 Python 列表作为内存数据库,并对其执行 CRUD 操作。首先,让我们设置一个 FastAPI 应用程序对象,并声明一个名为 Book 的 Pydantic 模型。
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
data = []
class Book(BaseModel):
id: int
title: str
author: str
publisher: str
使用 @app.post() 装饰器填充此模型的一个对象,并将其附加到书籍列表(已为书籍列表声明数据)
@app.post("/book")
def add_book(book: Book):
data.append(book.dict())
return data
在 Swagger UI 中,执行此操作函数几次并添加一些数据。
服务器的 JSON 响应显示了到目前为止添加的书籍列表。
要检索列表,请定义绑定 @app.get() 装饰器的操作函数,如下所示:
@app.get("/list")
def get_books():
return data
要检索 ID 为路径参数的书籍,请定义 get() 操作装饰器和 get_book() 函数,如下所示:
@app.get("/book/{id}")
def get_book(id: int):
id = id - 1
return data[id]
/list 路由检索所有书籍。
另一方面,在 "/book/1" 路由中使用 "id" 作为路径参数。
可以在 Swagger UI 的服务器响应中看到,将检索到 "id=1" 的书籍
接下来,定义 @app.put() 装饰器来修改数据列表中的一个对象。此装饰器也有一个用于 id 字段的路径参数。
@app.put("/book/{id}")
def add_book(id: int, book: Book):
data[id-1] = book
return data
在 swagger UI 中检查此操作函数。提供 id=1,并在请求正文中将 publisher 的值更改为 BPB。
执行时,响应将显示列表,其中 id=1 的对象已更新为新值。
最后,我们定义了 @app.delete() 装饰器来删除与路径参数对应的对象。
@app.delete("/book/{id}")
def delete_book(id: int):
data.pop(id-1)
return data
将 id=1 作为路径参数并执行函数。
执行后,该列表现在只显示两个对象