Once you understand middleware in one framework, you understand it in almost all of them — the syntax differs, but the shape underneath is identical everywhere: a chain of functions, each able to inspect or modify a request, and each responsible for calling the next one in line (or short-circuiting the chain entirely). This is a complete reference to that pattern, not a quick overview — work through it in order, or jump straight to the part you need from the sidebar.