520886·mooc动漫版面费引领行业新风尚

核心内容摘要

男生女生一起愁愁愁愁愁愁愁愁讲的
午夜的诱惑:禁忌之境的低语

寻踪苏语棠《房东太太》:一场触动心灵的视听盛宴,你绝对不能错过!

12 Go HTTP服务器进阶:路由、中间件、错误处理完整实现引言构建生产级的HTTP服务器需要路由管理、中间件机制和统一的错误处理。

本文将深入讲解这些进阶功能,帮助你构建健壮的HTTP服务器。

路由管理

1 自定义路由器packagemainimport("fmt""net/http")typeRouterstruct{routesmap[string]http.HandlerFunc}funcNewRouter()*Router{returnRouter{routes:make(map[string]http.HandlerFunc),}}func(r*Router)HandleFunc(patternstring,handler http.HandlerFunc){r.routes[pattern]=handler}func(r*Router)ServeHTTP(w http.ResponseWriter,req*http.Request){handler,ok:=r.routes[req.URL.Path]if!ok{http.NotFound(w,req)return}handler(w,req)}funcmain(){router:=NewRouter()router.HandleFunc("/",func(w http.ResponseWriter,r*http.Request){fmt.Fprintf(w,"首页")})router.HandleFunc("/about",func(w http.ResponseWriter,r*http.Request){fmt.Fprintf(w,"关于")})http.ListenAndServe(":8080",router)}

2 使用Gorilla Muxpackagemainimport("fmt""net/http""github.com/gorilla/mux")funcmain(){r:=mux.NewRouter()// 精确匹配r.HandleFunc("/users",listUsers).Methods("GET")r.HandleFunc("/users",createUser).Methods("POST")// 路径参数r.HandleFunc("/users/{id:[

]+}",getUser).Methods("GET")r.HandleFunc("/users/{id:[

]+}",updateUser).Methods("PUT")r.HandleFunc("/users/{id:[

]+}",deleteUser).Methods("DELETE")// 子路由api:=r.PathPrefix("/api/v1").Subrouter()api.HandleFunc("/users",apiListUsers).Methods("GET")http.ListenAndServe(":8080",r)}

中间件机制

1 中间件基础packagemainimport("fmt""log""net/http""time")typeMiddlewarefunc(http.HandlerFunc)http.HandlerFuncfuncLoggingMiddleware(next http.HandlerFunc)http.HandlerFunc{returnfunc(w http.ResponseWriter,r*http.Request){start:=time.Now()log.Printf("开始 %s %s",r.Method,r.URL.Path)next(w,r)log.Printf("完成 %s %s (耗时: %v)",r.Method,r.URL.Path,time.Since(start))}}funcAuthMiddleware(next http.HandlerFunc)http.HandlerFunc{returnfunc(w http.ResponseWriter,r*http.Request){token:=r.Header.Get("Authorization")iftoken==""

www.17c2025最新官方版下载-www.17c2025最新官方版下载应用

百度百家号客服电话人工服务

123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123