介绍
一个装饰器同时支持 get、post 等多个方法
方式1:多个装饰器
@app.get("/demo")
@app.post("/demo")
async def demo():
return {"msg":"多装饰器实现GET+POST"}
方式2:@app.api_route
@app.get/post本质就是api_route的封装,通过methods传列表即可一个接口同时接收 GET、POST。
@app.api_route(path, methods=["GET","POST"])
例子
from fastapi import FastAPI
app = FastAPI()
@app.api_route("/demo2", methods=["GET", "POST"])
async def demo2():
return {"msg": "支持GET和POST"}
注意:GET 请求不能读取请求体(body),如果POST需要接收body参数,GET调用时不要传body,否则会报错。
方式3:多个路由函数
业务上更推荐,GET和POST语义不一样,逻辑往往不同,分开写可读性更好
@app.get("/item")
async def item_get():
return {"method":"get"}
@app.post("/item")
async def item_post():
return {"method":"post"}
访问文档:http://127.0.0.1:8000/docs,可以看到该接口同时存在GET、POST两个操作。