doz15449 2018-11-28 19:55
浏览 61
已采纳

没有处理程序的Mux中间件

I'm building an application using the Micro Service Architecture. On the gateway, I do want to route requests to the correct endpoints.

But, the endpoint are now known at runtime and needs to be configured in the DB.

Below if the code to get the router.

func getRouter() *mux.Router {
    r := mux.NewRouter()

    r.Use(dynamicRouteMiddleware)

    return r
}

The middleware itself is this:

func dynamicRouteMiddleware(next http.Handler) http.Handler {
    return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        fmt.Println("Error")
    })
}

However, the "Error" is never printed. It's only printed when I put a handler for '/'

How can I create middleware without handlers?

  • 写回答

2条回答 默认 最新

  • douxiza9868 2018-11-28 22:38
    关注

    It's called "middleware" because it's supposed to put your Handler in the "middle". It receives the input before your Handler, and receives the output of your Handler.

    Inherently, to have your middleware work, you are required to have at least one Handler. Preferably you may just use this functionality that you need in the Handler rather than middleware.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
  • ¥20 Java-Oj-桌布的计算
  • ¥15 请问如何在openpcdet上对KITTI数据集的测试集进行结果评估?
  • ¥15 powerbuilder中的datawindow数据整合到新的DataWindow
  • ¥20 有人知道这种图怎么画吗?
  • ¥15 pyqt6如何引用qrc文件加载里面的的资源
  • ¥15 安卓JNI项目使用lua上的问题
  • ¥20 RL+GNN解决人员排班问题时梯度消失
  • ¥60 要数控稳压电源测试数据
  • ¥15 能帮我写下这个编程吗