Estoy tratando de usar la sesión para pasar variables a través de funciones de vista en fastapi. Sin embargo, no encuentro ningún documento que diga específicamente sobre el objeto de sesión. Dondequiera que veo, se utilizan cookies. ¿Hay alguna forma de convertir el siguiente código de matraz en fastapi? Quiero mantener la implementación de la sesión lo más simple posible.
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)Eche un vistazo a SessionMiddleware de Starlette. FastAPI usa Starlette debajo del capó, por lo que es compatible.
Después de registrar SessionMiddleware , puede acceder a Request.session , que es un diccionario.
Documentación: SessionMiddleware
Una implementación en FastAPI puede verse así:
@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)