Fastapi中的session对象类似于flask
session object in Fastapi similar to flask
我正在尝试使用会话在 fastapi 中跨视图函数传递变量。但是,我没有找到任何专门说明会话对象的文档。我看到的每个地方都使用 cookie。有没有办法在 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)
看看 Starlette 的 SessionMiddleware
。 FastAPI 在底层使用 Starlette,因此它是兼容的。
注册SessionMiddleware
后,您可以访问Request.session
,这是一个字典。
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)
我正在尝试使用会话在 fastapi 中跨视图函数传递变量。但是,我没有找到任何专门说明会话对象的文档。我看到的每个地方都使用 cookie。有没有办法在 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)
看看 Starlette 的 SessionMiddleware
。 FastAPI 在底层使用 Starlette,因此它是兼容的。
注册SessionMiddleware
后,您可以访问Request.session
,这是一个字典。
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)