What Is Middleware in a Go Web Application?
In Go’s built-in net/http package, middleware is a function that:
-
Wraps your main handler
-
Runs before the actual handler
-
Optionally runs after the handler
-
Adds cross-cutting features (logging, auth, tracing, monitoring)
Middleware is basically:
A function that intercepts an HTTP request before it reaches your handler.
Just like layers of an onion:
⭐ Common Middleware Examples
-
Logging incoming requests
-
Authentication & authorization
-
Request validation
-
Setting headers
-
Rate limiting
-
Panic recovery
-
CORS handling
-
Request tracing (OpenTelemetry)
1️⃣ Text-Based Diagram: How Middleware Works
2️⃣ Full Working Example: Go HTTP Server + Middleware + Handler + Resolver
We will build:
-
main.go→ main entry -
middleware.go→ middleware -
resolver.go→ business resolver -
handler.go→ handler (controller) -
Dockerfile→ run as a container
📁 Folder Structure
3️⃣ Code: middleware.go
4️⃣ Code: resolver.go (business logic layer)
5️⃣ Code: handler.go (HTTP handler)
6️⃣ Code: main.go (server setup)
7️⃣ Test the Server Locally
Run the app:
Test using browser or curl:
Output:
Logs:
8️⃣ Add Docker Support (Dockerfile)
Create Dockerfile:
9️⃣ Build & Run the Docker Container
Build:
Run:
Test:
🔟 Text Diagram: Overall Architecture
📝 Source code
https://github.com/kkvinodkumaran/go-middleware-demo
📝 Summary (Interview-Ready)
✔ What is middleware in Go?
A function that wraps your handler to execute logic before/after request processing.
✔ What can middleware do?
-
Logging
-
Auth
-
Rate limiting
-
Setting headers
-
Error handling
-
Tracing
✔ Our example includes:
-
Logging middleware
-
Handler
-
Resolver
-
HTTP server
-
Dockerfile
No comments:
Post a Comment