# 中间件

URL: https://caijiao.org/go/06-web/04-middleware
Source: docs/go/06-web/04-middleware.md
Description: 本节介绍 Go HTTP 服务中的中间件概念及实现方法，用于请求预处理和统一管理。

## 1. 什么是中间件

中间件是指在处理请求之前或之后执行的一段代码，用于日志、认证、限流等功能。

## 2. 中间件实现示例

```go
func loggingMiddleware(next http.Handler) http.Handler {
    return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        fmt.Println("Request URI:", r.RequestURI)
        next.ServeHTTP(w, r)
    })
}
````

## 3. 使用中间件

```go
mux := http.NewServeMux()
mux.HandleFunc("/", homeHandler)
loggedMux := loggingMiddleware(mux)
http.ListenAndServe(":8080", loggedMux)
```

## 4. 链式中间件

多个中间件可以组合调用，实现灵活的请求处理流程。

---

中间件提升 HTTP 服务的可维护性和功能扩展性。
