《Web Development with Go》写一个简单的LoggingMiddleware
2024-08-30 00:24:35
main.go
package main import ( "fmt" "log" "net/http" "time" ) func loggingHandler(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { start := time.Now() log.Printf("Started %s %s", r.Method, r.URL.Path) next.ServeHTTP(w, r) log.Printf("Completed %s in %v", r.URL.Path, time.Since(start)) }) } func index(w http.ResponseWriter, r *http.Request) { log.Println("Executing index handler") fmt.Fprintf(w, "welcome!") } func about(w http.ResponseWriter, r *http.Request) { log.Println("Executing about handler") fmt.Fprintf(w, "Go Middleware!") } func iconHandler(w http.ResponseWriter, r *http.Request) { } func main() { http.HandleFunc("/favicon.ico", iconHandler) indexHandler := http.HandlerFunc(index) aboutHandler := http.HandlerFunc(about) http.Handle("/", loggingHandler(indexHandler)) http.Handle("/about", loggingHandler(aboutHandler)) server := &http.Server{ Addr: ":8080", } log.Println("Listening...") server.ListenAndServe() }
最新文章
- python基础:交互式解释器
- python中的Queue
- C#获取百度新歌TOP50
- 对于EditText的详细用法
- Html5新增加的属性
- Chapter 6 装饰模式
- MountService初探
- JS判断PC和移动端设备
- 按键精灵 vbs 获取网页源码 xp系统被拒绝
- ArrayList在foreach正常迭代删除不报错的原因
- 用C语言实现Ping程序功能
- 安卓TV开发(概述) 智能电视之视觉设计和体验分析
- 基于Mycat实现读写分离
- 01构建第一个SpringBoot工程
- Api 文档管理系统 RAP2 环境搭建
- bzoj 3191
- linux系统转换root权限
- python基础的几个小练习题
- Qt 获取文件夹下所有文件
- 8 -- 深入使用Spring -- 5...2 使用@Cacheable执行缓存
热门文章
- Mysql字符串截取_获取指定字符串中的数据
- C# TreeView模糊查找节点
- Mac中创建一个OpenGL项目
- MyBatis核心对象之StatementHandler
- ReactNative: 使用像素密度类PixelRatio进行适配
- RTX5的汽车级,工业级,医疗和铁路安全认证已经通过,证书已颁发
- Codeforces Round #590 D. Distinct Characters Queries
- ETC到底要不要办?有什么好处?
- Deepnude算法“tuo”衣服
- ASP.NET Server对象