restful服务中,通常需要将请求信息记录到日志中。以下例子中展示了go如何实现一个简单的日志中间件。
它的基本原理是将业务函数(本例 foo/bar)作为参数传递给日志函数(本例 logging)中,然后将日志函数作为参数交给http.HandleFunc即可。
package main
import (
"fmt"
"log"
"net/http"
)
func logging(f http.HandlerFunc) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
log.Println(r.URL.Path)
f(w, r)
}
}
func foo(w http.ResponseWriter, r *http.Request) {
fmt.Fprintln(w, "foo")
}
func bar(w http.ResponseWriter, r *http.Request) {
fmt.Fprintln(w, "bar")
}
func main() {
http.HandleFunc("/foo", logging(foo))
http.HandleFunc("/bar", logging(bar))
http.ListenAndServe(":8080", nil)
}
每次访问http://localhost:8080/foo或者http://localhost:8080/bar,后台都会记录请求的地址
2021/02/28 23:56:41 /bar
2021/02/28 23:56:48 /foo
本文介绍了一个使用Go语言实现的日志中间件示例。该中间件可以记录HTTP请求的URL路径,通过简单地修改业务处理函数,即可轻松集成到RESTful服务中。
1150

被折叠的 条评论
为什么被折叠?



