FastAPI是一个基于Python3.6+的快速(fast)API框架,它具有许多强大的功能,包括自动文档生成,依赖注入,可扩展性和高级路由等。
FastAPI支持以下几种主要的HTTP请求方法:
下面是如何在FastAPI中使用这些请求方法的示例:
from fastapi import FastAPI
app = FastAPI()
@app.get("/items/{item_id}")
async def read_item(item_id: int, q: str = None):
return {"item_id": item_id, "q": q}
@app.post("/items")
async def create_item(item: Item):
return {"item_id": item.id}
@app.put("/items/{item_id}")
async def update_item(item_id: int, item: Item):
return {"item_id": item_id, "item": item}
@app.delete("/items/{item_id}")
async def delete_item(item_id: int):
return {"item_id": item_id}
在这个例子中,我们定义了四个路由:GET, POST, PUT和DELETE。每个路由都对应一个特定的HTTP方法。
注意,在方法定义中使用的参数(如item_id和item)是与路由路径参数和请求体中的数据相对应的。请求体中的数据必须是一个Python类,其字段将自动转换为JSON字段。
此外,路径参数使用{…}在路由中定义,可以指定参数的类型(如int)。
对于PATCH和HEAD方法,使用方式与上述类似,只需更改路由的装饰器即可:
@app.patch("/items/{item_id}")
async def partial_update_item(item_id: int, item: Item):
return {"item_id": item_id, "item": item}
@app.head("/items/{item_id}")
async def check_item(item_id: int):
return {"item_id": item_id}
最后,OPTIONS方法可以通过在路由装饰器中添加额外的路径参数来定义:
python
@app.options("/items/{item_id}")
async def check_allowed_methods(item_id: int):
return { "GET": "This endpoint supports GET requests", "POST": "This endpoint supports POST requests"}
在这个例子中,我们的OPTIONS方法返回一个字典,其中包含了该端点支持的所有HTTP方法及其描述。