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中,执行几次这个操作函数并添加一些数据。
服务器的 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 作为路径参数并执行函数。
执行后,列表现在只显示两个对象