from fastapi import Cookie, Depends, FastAPI, Response app = FastAPI() def query_extractor(q: str | None = None): return q def query_or_cookie_extractor( response: Response, q: str = Depends(query_extractor), last_query: str | None = Cookie(default=None) ): if not q: return last_query else: response.set_cookie(key="last_query", value=q) return q @app.get("/items/") async def read_query(query_or_default: str = Depends(query_or_cookie_extractor)): return {"q_or_cookie": query_or_default}