Skip to content

Instantly share code, notes, and snippets.

@jsbueno
Created January 15, 2026 23:34
Show Gist options
  • Select an option

  • Save jsbueno/2ecac2b151e1a0c026b615b331374f17 to your computer and use it in GitHub Desktop.

Select an option

Save jsbueno/2ecac2b151e1a0c026b615b331374f17 to your computer and use it in GitHub Desktop.
Snippet: uma view de fastapi que usa um middleware pra recuperar um valor do request em uma chamada usada pela view: a view nao precisa saber NADA sobre "quem_chamou".
# pip install fastapi, python-extracontext
from fastapi import FastAPI, Request
from extracontext import ContextLocal
app = FastAPI()
ctx = ContextLocal()
@app.middleware("http")
async def anota_quem_chamou(request: Request, call_next):
ctx.quem_chamou = request.query_params.get("usuario")
# <= voce normalmente vai extrair isso do request
# (headers, cookies, url, etc...)
response = await call_next(request)
return response
def ve_se_pode(permissao):
# aqui o namespace ctx funciona separado pra cada request!
if permissao == "pode_ver" and ctx.quem_chamou == "joao":
return True
...
return False
@app.get("/coisa")
def coisa(contexto: str): # contexto, extraido por inj. de dependencia normal do FastApi
if ve_se_pode("pode_ver"):
return contexto + " coisa"
return contexto + " tem nada"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment