Fastapi中的session对象与flask类似

myq*_* sh 8 python fastapi

我正在尝试使用 session 在 fastapi 中的视图函数之间传递变量。但是,我没有找到任何专门说明会话对象的文档。我看到的所有地方都使用cookie。有什么方法可以将下面的flask代码转换为fastapi吗?我想让会话实现尽可能简单。

from flask import Flask, session, render_template, request, redirect, url_for


app=Flask(__name__)
app.secret_key='asdsdfsdfs13sdf_df%&'   

@app.route('/a')
def a():
    session['my_var'] = '1234'              
    return redirect(url_for('b'))          


@app.route('/b')
def b():
    my_var = session.get('my_var', None)
    return my_var    


if __name__=='__main__':
    app.run(host='0.0.0.0', port=5000, debug = True)
Run Code Online (Sandbox Code Playgroud)

小智 11

看看斯塔莱特的SessionMiddleware。FastAPI 在底层使用 Starlette,因此它是兼容的。

注册后SessionMiddleware,您可以访问Request.session,这是一本字典。

文档:SessionMiddleware

FastAPI 中的实现可能如下所示:

@app.route("/a")
async def a(request: Request) -> RedirectResponse:

    request.session["my_var"] = "1234"

    return RedirectResponse("/b")

@app.route("/b")
async def b(request: Request) -> PlainTextResponse:

    my_var = request.session.get("my_var", None)

    return PlainTextResponse(my_var)
Run Code Online (Sandbox Code Playgroud)