news 2026/6/26 1:31:51

1.12 Go HTTP服务器进阶:路由、中间件、错误处理完整实现

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
1.12 Go HTTP服务器进阶:路由、中间件、错误处理完整实现

1.12 Go HTTP服务器进阶:路由、中间件、错误处理完整实现

引言

构建生产级的HTTP服务器需要路由管理、中间件机制和统一的错误处理。本文将深入讲解这些进阶功能,帮助你构建健壮的HTTP服务器。

一、路由管理

1.1 自定义路由器

packagemainimport("fmt""net/http")typeRouterstruct{routesmap[string]http.HandlerFunc}funcNewRouter()*Router{return&Router{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)}

1.2 使用Gorilla Mux

packagemainimport("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:[0-9]+}",getUser).Methods("GET")r.HandleFunc("/users/{id:[0-9]+}",updateUser).Methods("PUT")r.HandleFunc("/users/{id:[0-9]+}",deleteUser).Methods("DELETE")// 子路由api:=r.PathPrefix("/api/v1").Subrouter()api.HandleFunc("/users",apiListUsers).Methods("GET")http.ListenAndServe(":8080",r)}

二、中间件机制

2.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==""
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/26 0:53:54

1.13 Go HTTP服务器性能优化:连接池、超时控制、优雅关闭实战技巧

1.13 Go HTTP服务器性能优化:连接池、超时控制、优雅关闭实战技巧 引言 生产环境的HTTP服务器需要高性能和高可用性。本文将深入讲解连接池、超时控制、优雅关闭等性能优化技巧,帮助你构建高性能的HTTP服务器。 一、HTTP客户端连接池 1.1 默认HTTP客户端的问题 package …

作者头像 李华
网站建设 2026/6/20 9:06:48

开箱即用!基于UNet的图像抠图镜像快速入门指南

开箱即用!基于UNet的图像抠图镜像快速入门指南 1. 为什么你今天就能用上专业级抠图工具 你有没有过这样的经历:为了给一张人像换背景,在Photoshop里花半小时调边缘、修毛发,结果还是有白边;或者要处理几十张电商产品…

作者头像 李华
网站建设 2026/6/22 0:08:41

用gpt-oss写Python代码,准确率竟然这么高

用gpt-oss写Python代码,准确率竟然这么高 最近在本地部署 gpt-oss-20b-WEBUI 镜像时,我随手让它写了一段爬虫脚本——结果一次通过、零报错、直接能跑。这让我有点意外:一个刚开源不久的模型,代码生成质量居然比很多商用API还稳。…

作者头像 李华
网站建设 2026/6/23 10:11:07

零门槛掌握BloomRPC:gRPC图形化工具实战指南

零门槛掌握BloomRPC:gRPC图形化工具实战指南 【免费下载链接】bloomrpc Former GUI client for gRPC services. No longer maintained. 项目地址: https://gitcode.com/gh_mirrors/bl/bloomrpc 还在为手写gRPC命令行调试工具而烦恼?BloomRPC让你像…

作者头像 李华
网站建设 2026/6/17 5:38:46

升级测试镜像后,我的Linux自启速度明显加快

升级测试镜像后,我的Linux自启速度明显加快 你有没有遇到过这样的情况:刚刷完嵌入式设备的固件,一开机就等得心焦——系统卡在启动日志里半天不动,串口输出慢得像在读古籍?我之前也这样,直到把旧版“测试开…

作者头像 李华