主题
路由分组、请求验证、日志
1. 路由分组
利用第三方路由框架(如 gorilla/mux)实现路由分组:
go
r := mux.NewRouter()
api := r.PathPrefix("/api").Subrouter()
api.HandleFunc("/users", usersHandler).Methods("GET")
2. 请求验证
在处理函数中校验请求参数或身份:
go
func authMiddleware(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
token := r.Header.Get("Authorization")
if token != "valid-token" {
http.Error(w, "Unauthorized", http.StatusUnauthorized)
return
}
next.ServeHTTP(w, r)
})
}
3. 日志记录
实现简单日志中间件:
go
func loggingMiddleware(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
log.Printf("%s %s", r.Method, r.RequestURI)
next.ServeHTTP(w, r)
})
}
4. 组合使用
将中间件和路由分组结合,实现安全且可维护的 API。
路由分组、验证和日志是大型 Web 服务开发的基础模块。