#40 Compitable with context.Context middlewares

Open
opened 2 years ago by lunny · 0 comments
lunny commented 2 years ago

Author: @lunny

Action is an interface in a middleware and context.Context is also an interface. There are some similar features between Action and context.Context. In tango, we use assert to get the info from Action, in context.Context, it's also a regular usage get info via assert.

func (ctx *tango.Ctx) {
     if sess, ok := ctx.Action().(Sessioner); ok {
           // do something
    }
}
func (resp http.ResponseWriter, req *http.Request) {
    if sess, ok := req.Context().(Sessioner); ok {
          // do something 
   }
}

So that maybe all the tango's middlewares could be changed slightly to apply in http.Handler.

Author: @lunny Action is an interface in a middleware and `context.Context` is also an interface. There are some similar features between Action and `context.Context`. In tango, we use assert to get the info from Action, in `context.Context`, it's also a regular usage get info via assert. ```Go func (ctx *tango.Ctx) { if sess, ok := ctx.Action().(Sessioner); ok { // do something } } ``` ```Go func (resp http.ResponseWriter, req *http.Request) { if sess, ok := req.Context().(Sessioner); ok { // do something } } ``` So that maybe all the tango's middlewares could be changed slightly to apply in `http.Handler`.
Sign in to join this conversation.
No Milestone
No Assignees
1 Participants
Due Date

No due date set.

Dependencies

This issue currently doesn't have any dependencies.

Loading…
Cancel
Save
There is no content yet.