Data Transfer from Middleware to Handlers
In modern web development, middleware and handlers often collaborate to process requests. To avoid duplicating code, effectively transferring data from middleware to handlers is crucial.
Consider the scenario where middleware intercepts and prepares data, such as parsing JWTs from the request body. Sharing this parsed data with handlers eliminates unnecessary duplication.
Using the Gorilla Context Package
If you're employing the Gorilla toolkit, leverage its context package. This allows you to set and retrieve data from the request context without modifying method signatures.
// Middleware http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { // Middleware operations token := jwtParser(r) context.Set(r, "token", token) next.ServeHTTP(w, r) }) // Handler http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { token := context.Get(r, "token") })
Note: The Gorilla context package is now in maintenance mode, and it's recommended to use the native Go context.Context feature introduced in Go 1.7.
The above is the detailed content of How to Effectively Transfer Data from Middleware to Handlers in Go?. For more information, please follow other related articles on the PHP Chinese website!