探索Go语言中的HTTP路由和中间件
package main
import (
"net/http"
"github.com/gorilla/mux"
"github.com/justinas/alice"
)
// 定义一个HTTP处理器
func helloHandler(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("Hello, World!"))
}
// 定义一个HTTP中间件
func loggingMiddleware(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
// 在调用下游处理器之前,执行日志记录
println("Logging:", r.Method, r.RequestURI)
next.ServeHTTP(w, r)
})
}
func main() {
// 创建一个mux路由器
router := mux.NewRouter()
// 定义路由和关联处理器
router.HandleFunc("/hello", helloHandler)
// 创建中间件链
chain := alice.New(loggingMiddleware)
// 使用中间件和路由器创建一个HTTP服务器
http.Handle("/", chain.Then(router))
http.ListenAndServe(":8080", nil)
}
这段代码首先定义了一个简单的HTTP处理器helloHandler
,然后实现了一个简单的HTTP中间件loggingMiddleware
,用于记录HTTP请求的方法和URI。接着,使用Gorilla的mux.Router
设置了一个路由,将/hello
路径关联到helloHandler
。最后,使用alice.Chain
将中间件应用到路由器上,并启动一个HTTP服务器监听8080端口。
评论已关闭