fastapi: 在路由函数中判断请求方法(使get/post方法使用同一个函数)

一,代码:

# GET POST 路由:处理表单提交
@router.api_route("/register", methods=["GET", "POST"], summary="用户注册")
async def post_register(request: Request,db: AsyncSession = Depends(get_db)):
    # 核心判断逻辑:检查 request.method
    if request.method == "GET":
        form = RegistrationForm()
        return templates.TemplateResponse(
            request=request,
            name="account/register.html",
            context={"request": request, "form": form, "title": "注册用户"})
    elif request.method == "POST":
        # 将 FastAPI 接收到的 FormData 转换为 WTForms 需要的格式
        form_data = await request.form()

        form = RegistrationForm(form_data)

        if form.validate():
            

 说明:

装饰器必须使用 @app.api_route
平时我们常用的 @app.get() 或 @app.post() 是快捷装饰器,只能绑定单一方法。
要同时支持多个方法,必须使用底层的 @app.api_route(path, methods=[...])。

request: Request 对象
通过在函数参数中声明 request: Request,FastAPI 会把当前请求的上下文注入进来。
request.method 返回的是大写的字符串(如 "GET"、"POST")。

 

posted @ 2026-07-22 16:29  刘宏缔的架构森林  阅读(2)  评论(0)    收藏  举报