go-res icon indicating copy to clipboard operation
go-res copied to clipboard

Is it possible to create a middleware for any type of handlers?

Open remyduthu opened this issue 2 years ago • 0 comments

Hi! I'm trying to create a middleware for handlers. I succeeded to create a middleware for a specific type of handler. For example:

func (s *service) myMiddleware(h res.CollectionHandler) res.CollectionHandler {
  return func(r res.CollectionRequest) {
    // Do stuff...
    h(r)
  }
}

s.router.Handle("teams",
  res.GetCollection(s.myMiddleware(s.findTeams)),
  ...
)

I would like to know if I can create a middleware for any type of handler? For example:

s.router.Handle("...",
  res.GetCollection(s.myMiddleware(s.findTeams)),
  res.GetModel(s.myMiddleware(s.findTeam)),
  res.Call(s.myMiddleware(s.createTeam)),
)

I can't find a common "generic" interface to use, is it even possible?

Thanks in advance 🙌

remyduthu avatar Jan 12 '22 17:01 remyduthu