The documentation you are viewing is for Dapr v1.12 which is an older version of Dapr. For up-to-date documentation, see the latest version.
How to: Author 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
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.