FastAPI - CRUD 操作


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 中,执行此操作函数几次并添加一些数据。

FastAPI CRUD 操作

服务器的 JSON 响应显示到目前为止添加的书籍列表。

FastAPI CRUD 操作

要检索列表,请定义绑定到@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路由检索所有书籍。

FastAPI CRUD 操作

另一方面,使用“id”作为“/book/1”路由中的路径参数。

FastAPI CRUD 操作

将检索“id=1”的书籍,如 Swagger UI 的服务器响应所示

FastAPI CRUD 操作

接下来,定义@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。

FastAPI CRUD 操作

执行时,响应会显示 id=1 的对象列表,该对象已更新为新值。

FastAPI CRUD 操作

最后,我们定义 @app.delete() 装饰器来删除路径参数对应的对象。

@app.delete("/book/{id}")
def delete_book(id: int):
   data.pop(id-1)
   return data

将 id=1 作为路径参数并执行该函数。

FastAPI CRUD 操作

执行后,列表现在仅显示两个对象

FastAPI CRUD 操作