How can I set an arbitrary attribute to the Request
object from the middleware function?
from fastapi import FastAPI, Request
app = FastAPI()
@app.middleware("http")
async def set_custom_attr(request: Request, call_next):
request.custom_attr = "This is my custom attribute"
response = await call_next(request)
return response
@app.get("/")
async def root(request: Request):
return {"custom_attr": request.custom_attr}
This setup is raising an exception,
AttributeError: 'Request' object has no attribute 'custom_attr'
So, how can I get the "This is my custom attribute"
value in my router?
We can't attach/set an attribute to the request
object (correct me if I am wrong).
But, we can make use of the Request.state
--(Doc) property
from fastapi import FastAPI, Request
app = FastAPI()
@app.middleware("http")
async def set_custom_attr(request: Request, call_next):
response = await call_next(request)
return response
@app.get("/")
async def root(request: Request):
return {"custom_attr": } # accessing the value from `request.state`
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.