What is Flask's before_request and after_request?

Answer

@app.before_request registers a function that runs before every request — regardless of which route handles it. Common uses: authenticate the request (verify JWT, set g.current_user), open database connections, check maintenance mode. If the function returns a response, Flask uses that response and skips the route handler. @app.after_request registers a function that runs after every request, receiving the response object. It must return the response (modified or as-is). Common uses: add CORS headers, log request duration, modify response headers. @app.teardown_request runs after the response is sent — used for cleanup regardless of exceptions (close DB connections). Blueprint-level versions (@blueprint.before_request) only apply to that blueprint's routes.