基本上,我想编写一个中间件来关闭在请求时创建的事务对象。我正在使用 gorilla mux 包。我熟悉 python-Django 中间件,它可以正确处理错误或响应。但找不到与 golang 类似的东西
最佳答案
在 Go 语言中你也可以创建一个中间件,下面我将创建处理程序的过程编写为 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!!!")
}
关于go - 我如何编写处理来自 API 的响应/错误的 golang 中间件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52816646/