游戏王卡牌之STM32H750:用立创EDA打造嵌入式“怪兽卡”PCB艺术

核心内容摘要

工业现场USB转485驱动程序下载稳定性优化建议
YOLO12与Vue.js结合打造可视化目标检测平台

C++多文件编译:告别“一锅炖”,让代码管理更优雅

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==""

17.com免费观看途径-17.com免费观看途径应用

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

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