使用go语言写一个执行时间中间件,不太明白中间件timeHandler部分的执行过程.

本文介绍如何用Go语言编写一个HTTP中间件,该中间件记录请求的开始和结束时间,以实现对HTTP请求处理时间的监控。通过`timeHandler`函数,它在请求开始时记录时间,并在请求完成后输出处理所花费的时间。这个中间件可以用于优化和调试web服务的性能。

使用go语言写一个执行时间中间件,不太明白中间件timeHandler部分的执行过程.

package main

import (
	"fmt"
	"log"
	"net/http"
	"time"
)

func index(w http.ResponseWriter, r *http.Request) {
	fmt.Fprintf(w, "This is index!")

}
func hello(w http.ResponseWriter, r *http.Request) {
	fmt.Fprintf(w, "Hello world!")

}
//这个不太懂.过程有点难理解
func timeHandler(next http.Handler) http.Handler {
	return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
		start := time.Now()
		log.Printf("Strated %s %s ", r.Method, r.URL.Path)
		next.ServeHTTP(w, r)
		log.Printf("Completed %s in %v", r.URL.Path, time.Since(start))

	})

}
func asd(w http.ResponseWriter, r *http.Request) {
	fmt.Fprintf(w, "yaochizaocan")

}

func main() {
	mux := http.NewServeMux()                              //创建一个路由转发器.
	mux.Handle("/asd", timeHandler(http.HandlerFunc(asd))) //将写好的asd函数到写好的timehandler中间件进行注册.
	mux.Handle("/hello", timeHandler(http.HandlerFunc(hello)))
	mux.Handle("/", timeHandler(http.HandlerFunc(index)))
	http.ListenAndServe(":8080", mux)
}

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值