golang 中间件使用
在Go语言中,中间件是一种用于在请求处理之前或之后执行特定逻辑的机制。以下是一个使用中间件的简单示例,使用标准库net/http
。
package main
import (
"log"
"net/http"
)
// 中间件函数
func Middleware(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
// 在请求处理之前执行的逻辑
log.Println("Before request handling")
// 调用下一个中间件或处理器
next.ServeHTTP(w, r)
// 在请求处理之后执行的逻辑
log.Println("After request handling")
})
}
// 处理器函数
func Handler(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("Hello, World!"))
}
func main() {
// 使用中间件包裹处理器
http.Handle("/", Middleware(http.HandlerFunc(Handler)))
log.Fatal(http.ListenAndServe(":8080", nil))
}
在这个例子中,我们定义了一个名为Middleware
的中间件函数,它接受一个http.Handler
作为参数,并返回一个http.Handler
。在返回的HandlerFunc
中,我们在处理请求前后记录了日志。然后,我们使用这个中间件来包裹我们的处理器Handler
。当服务器启动并开始监听请求时,对于所有访问根路径"/"
的请求,都会先经过Middleware
中间件,然后再由Handler
处理器处理请求。
评论已关闭