使用Go编写HTTP中间件
以下是一个简单的Go语言HTTP中间件示例,它使用了net/http
标准库,并提供了一个简单的中间件函数,该函数记录每个请求的日志,并根据请求方法,记录不同的日志级别。
package main
import (
"log"
"net/http"
)
// Middleware function to log HTTP requests
func loggingMiddleware(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
// Before serving the request, log the request
log.Printf("[%s] %s\n", r.Method, r.RequestURI)
// Serve the request
next.ServeHTTP(w, r)
})
}
func main() {
// Setup a simple handler
http.Handle("/", loggingMiddleware(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("Hello, World!"))
})))
// Start the server
log.Fatal(http.ListenAndServe(":8080", nil))
}
这段代码定义了一个名为loggingMiddleware
的函数,它接收一个http.Handler
作为参数,并返回一个http.HandlerFunc
。在这个函数内部,它首先记录请求的方法和URI,然后调用next.ServeHTTP
来处理请求。
在main
函数中,我们设置了一个简单的处理函数,并将其包装在loggingMiddleware
中。然后,我们启动了一个HTTP服务器监听8080端口。
这个示例展示了如何在Go中编写一个简单的HTTP中间件,并在请求处理管道中插入额外的逻辑(例如日志记录)。
评论已关闭