如何编写处理来自API的响应/错误的golang中间件?

时间:2018-10-15 12:19:04

标签: go middleware mux

基本上,我想编写一个中间件,该中间件在请求时创建事务对象。我正在使用大猩猩mux包。我熟悉python-Django中间件,它可以正确处理错误或响应。但找不到与golang类似的东西

1 个答案:

答案 0 :(得分:0)

在Go lang中,您也可以创建一个中间件,下面,我编写了将处理程序创建为validateMiddleware的过程,然后在请求TestEndpoint API时调用了它。

func main() {
    router := mux.NewRouter()

    router.HandleFunc("/test", ValidateMiddleware(TestEndpoint)).Methods("GET")
    log.Fatal(http.ListenAndServe(":12345", router))
}

现在您可以按以下方式创建validateMiddleware处理程序:

    func ValidateMiddleware(next http.HandlerFunc) http.HandlerFunc {
        return http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) {
            authorizationHeader := req.Header.Get("authorization")
                    if authorizationHeader != "" {
                        // if true, then request for next handler.
                        next(w, req)
                    } else {
                        json.NewEncoder(w).Encode(Exception{Message: "Invalid authorization token"})
                        return
                    }
        })
    }

最后创建原始请求的处理程序TestEndpoint

func TestEndpoint(w http.ResponseWriter, req *http.Request) {
    fmt.Println("Hello Go middleware!!!")
}