inline middlewares

This commit is contained in:
2025-08-16 14:43:41 +05:30
parent 855b82e9df
commit 216fe93a55
3 changed files with 39 additions and 25 deletions

View File

@@ -21,7 +21,7 @@ type Resource struct {
// - PUT /pattern/:id update a resource
// - PATCH /pattern/:id partial update a resource
// - DELETE /resource/:id delete a resource
func (m *Mux) Resource(pattern string, fn func(res *Resource)) {
func (m *Mux) Resource(pattern string, fn func(res *Resource), mw ...func(http.Handler) http.Handler) {
if m == nil {
panic("mux: Resource() called on nil")
}
@@ -35,9 +35,14 @@ func (m *Mux) Resource(pattern string, fn func(res *Resource)) {
}
// Copy root middlewares.
mws := make([]func(http.Handler) http.Handler, len(m.middlewares))
mws := make([]func(http.Handler) http.Handler, 0, len(m.middlewares)+len(mw))
copy(mws, m.middlewares)
// Append inline middlewares.
if len(mw) > 0 {
mws = append(mws, mw...)
}
fn(&Resource{
mux: m.mux,
pattern: pattern,