#40 Compitable with context.Context middlewares

Открыто
открыта 2 лет назад lunny · комментариев: 0
lunny прокомментировал 2 лет назад

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`.
Войдите, чтобы присоединиться к обсуждению.
Нет этапа
Нет назначенных лиц
1 участников
Срок выполнения

Срок выполнения не установлен.

Зависимости

В настоящее время эта задача не имеет зависимостей.

Загрузка…
Отмена
Сохранить
Пока нет содержимого.