16。FastAPIsession 在FastAPI中,要使用session,实际上是使用StarletteSession,StarletteSession是作为一个中间件存在的,所以需要安装StarletteSession。执行命令:pipinstallstarlettesession16。1使用Redis作为session存储 代码如下:fromfastapiimportFastAPIfromredisimportRedisfromstarlettesessionimportSessionMiddlewarefromstarlettesession。backendsimportBackendTypeappFastAPI()redisclientRedis(host127。0。0。1,port6379,passwordxxxxxx)app。addmiddleware(SessionMiddleware,secretkeysecret,cookienamecookie22,backendtypeBackendType。redis,backendclientredisclient)16。2使用RedisCluster作为session存储 代码如下:fromfastapiimportFastAPIfromredisclusterimportRedisClusterfromstarlettesessionimportSessionMiddlewarefromstarlettesession。backendsimportBackendTypeappFastAPI()redisclientRedisCluster(host127。0。0。1,port6381,passwordxxxxxx)app。addmiddleware(SessionMiddleware,secretkeysecret,cookienamecookie22,backendtypeBackendType。redis,backendclientredisclient)16。3操作session 在FastAPI中,操作session可以通过request对象直接进行操作,假设对象名为request,则:request。session。update()设置session,参数为字典request。session。clear()清除sessionrequest。session读取session 代码如下:fromfastapiimportFastAPIfromfastapiimportRequestfromredisclusterimportRedisClusterfromstarlettesessionimportSessionMiddlewarefromstarlettesession。backendsimportBackendTypeappFastAPI()redisclientRedisCluster(host127。0。0。1,port6381,passwordjane10181010)app。addmiddleware(SessionMiddleware,secretkeysecret,cookienamecookie22,backendtypeBackendType。redis,backendclientredisclient)app。get(pathset)asyncdefset(request:Request):request。session。update({uid:10181010})return{res:True}app。get(pathcls)asyncdefcls(request:Request):request。session。clear()return{res:True}app。get(pathget)asyncdefget(request:Request):return{session:request。session} 执行请求:curlhttp:127。0。0。1:8000setiHTTP1。1200OKdate:Tue,18Jan202202:20:00GMTserver:uvicorncontentlength:12contenttype:applicationjsonsetcookie:cookie22eyJfY3NzaWQiOiAiOGExMDJiM2UtZjJiNS00ZmVmLWJhZWEtYWM5YjI4ZWQ1N2JlIn0。YeYj0Q。UCFZKi3jalMw0SknLsmMRYpSj0;PMaxAge1209600;samesitelax{res:true}curlhttp:127。0。0。1:8000getcookiecookie22eyJfY3NzaWQiOiAiOGExMDJiM2UtZjJiNS00ZmVmLWJhZWEtYWM5YjI4ZWQ1N2JlIn0。YeYj0Q。UCFZKi3jalMw0SknLsmMRYpSj0;PMaxAge1209600;samesitelaxiHTTP1。1200OKdate:Tue,18Jan202202:20:26GMTserver:uvicorncontentlength:30contenttype:applicationjsonsetcookie:cookie22eyJfY3NzaWQiOiAiOGExMDJiM2UtZjJiNS00ZmVmLWJhZWEtYWM5YjI4ZWQ1N2JlIn0。YeYj6w。H2gL6VBTq4ePB9gaTg3fAt5r0;PMaxAge1209600;samesitelax{session:{uid:10181010}}curlhttp:127。0。0。1:8000clscookiecookie22eyJfY3NzaWQiOiAiOGExMDJiM2UtZjJiNS00ZmVmLWJhZWEtYWM5YjI4ZWQ1N2JlIn0。YeYj0Q。UCFZKi3jalMw0SknLsmMRYpSj0;PMaxAge1209600;samesitelaxiHTTP1。1200OKdate:Tue,18Jan202202:20:48GMTserver:uvicorncontentlength:12contenttype:applicationjsonsetcookie:cookie22PExpiresThu,01Jan197000:00:00GMT;MaxAge0;samesitelax{res:true}curlhttp:127。0。0。1:8000getcookiecookie22eyJfY3NzaWQiOiAiOGExMDJiM2UtZjJiNS00ZmVmLWJhZWEtYWM5YjI4ZWQ1N2JlIn0。YeYj0Q。UCFZKi3jalMw0SknLsmMRYpSj0;PMaxAge1209600;samesitelaxiHTTP1。1200OKdate:Tue,18Jan202202:20:53GMTserver:uvicorncontentlength:16contenttype:applicationjsonsetcookie:cookie22PExpiresThu,01Jan197000:00:00GMT;MaxAge0;samesitelax{session:null}