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用户界面中,执行这个操作函数几次并添加一些数据。
服务器的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 “作为路径参数。
id=1 “的书将被检索出来,在Swagger UI的服务器响应中可以看到。
接下来,定义 @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作为路径参数并执行该函数。
执行后,列表中现在只显示两个对象