深入理解与使用go之中间件--实现
以下是一个简单的Go中间件实现的例子,它使用了一个简单的HTTP服务器,并应用了一个日志记录中间件。
package main
import (
"log"
"net/http"
)
// 中间件函数,接收一个Handler并返回一个新的Handler
func loggingMiddleware(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
log.Printf("请求: %s %s\n", r.Method, r.RequestURI)
next.ServeHTTP(w, r) // 调用下一个Handler
})
}
// 业务逻辑Handler
func helloHandler(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("Hello, World!"))
}
func main() {
// 使用中间件包装helloHandler
http.Handle("/", loggingMiddleware(http.HandlerFunc(helloHandler)))
// 启动HTTP服务器
log.Fatal(http.ListenAndServe(":8080", nil))
}
这段代码定义了一个loggingMiddleware
函数,它创建了一个新的Handler,在处理请求前后记录日志。然后,我们使用这个中间件来包装我们的helloHandler
,并在8080端口启动一个HTTP服务器。当访问服务器根路径时,服务器将会响应"Hello, World!"并记录请求的方法和URI。
评论已关闭