Read the first example one line at a time. A line that prints shows what appears on screen; the rest set things up quietly.
def run_middleware(middleware, req):
sets nothing on screen
state = dict(req)
sets nothing on screen
for i, mw in enumerate(middleware, 1):
sets nothing on screen
if mw["fn"](state):
sets nothing on screen
print("Stage %d: %s -> stops" % (i, mw["name"]))
Middleware and request flow
return state
sets nothing on screen
print("Stage %d: %s -> continue" % (i, mw["name"]))
Stage 1: express.json() -> continue
return state
sets nothing on screen
print()
Stage 2: logger -> continue
print("Middleware and request flow")
Stage 3: requireAuth -> continue
middleware = [
sets nothing on screen
{"name": "express.json()", "fn": lambda r: r.update({"body": r.get("raw", {})}) or False},
sets nothing on screen
{"name": "logger", "fn": lambda r: False},
sets nothing on screen
{"name": "requireAuth", "fn": lambda r: False},
sets nothing on screen
]
sets nothing on screen
result = run_middleware(middleware, {"raw": {"q": "hi"}})
sets nothing on screen
print("Final request body: %s" % json.dumps(result.get("body")))
Final request body: {"q": "hi"}