How to: Author middleware components
Learn how to develop middleware components
Dapr allows custom processing pipelines to be defined by chaining a series of middleware components. In this guide, you’ll learn how to create a middleware component. To learn how to configure an existing middleware component, see Configure middleware components
Writing a custom HTTP middleware
HTTP middlewares in Dapr wrap standard Go net/http handler functions.
Your middleware needs to implement a middleware interface, which defines a GetHandler method that returns a http.Handler callback and an error:
type Middleware interface {
GetHandler(metadata middleware.Metadata) (func(next http.Handler) http.Handler, error)
}
The handler receives a next
callback that should be invoked to continue processing the request.
Your handler implementation can include an inbound logic, outbound logic, or both:
func (m *customMiddleware) GetHandler(metadata middleware.Metadata) (func(next http.Handler) http.Handler, error) {
var err error
return func(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
// Inbound logic
// ...
// Call the next handler
next.ServeHTTP(w, r)
// Outbound logic
// ...
}
}, err
}
Related links
Last modified February 1, 2023: Updated docs for authoring middleware components in 1.10 (6415f00c)