路由分组、请求验证、日志

1. 路由分组

利用第三方路由框架(如 gorilla/mux)实现路由分组:

r := mux.NewRouter()
api := r.PathPrefix("/api").Subrouter()
api.HandleFunc("/users", usersHandler).Methods("GET")

`

2. 请求验证

在处理函数中校验请求参数或身份:

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. 日志记录

实现简单日志中间件:

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 服务开发的基础模块。