FastAPI教程-路由:绑定多个http方法(get、post)

介绍

一个装饰器同时支持 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两个操作。


原文出处:/show_1GW3o8cA96BE.html