FastAPI是一个基于Python3.6+的快速(fast)API框架,它具有许多强大的功能,包括自动文档生成,依赖注入,可扩展性和高级路由等。
FastAPI支持以下几种主要的HTTP请求方法:
- GET: 用于获取某个资源或多个资源。例如,浏览网页或搜索结果。
- POST: 用于在服务器上创建新资源。例如,在社交网络中发布新状态。
- PUT: 用于更新资源。例如,更新用户信息。
- DELETE: 用于删除资源。例如,删除一个帖子。
- PATCH: 用于对资源进行局部更新。例如,更新社交网络中一条状态的某些部分。
- HEAD: 与GET方法类似,但不返回响应体,只获取HTTP头信息。这种请求方法常用于检查链接的有效性。
- OPTIONS: 用于获取目标资源所支持的通信选项。它可以用来在客户端进行通信能力协商。
下面是如何在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方法及其描述。