发布时间:2024-11-22 01:38:57
```go func handler(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hello, %s!", r.URL.Path[1:]) } func main() { http.HandleFunc("/", handler) http.ListenAndServe(":8080", nil) } ```
上述代码中,我们首先定义了一个处理函数`handler`,它接收两个参数ResponseWriter和Request。在这个函数内部,我们使用`fmt.Fprintf`方法将一个简单的字符串写入到ResponseWriter中,该字符串将作为响应返回给客户端。 接下来,在`main`函数中,我们通过`http.HandleFunc`方法将我们的处理函数绑定到根路径"/"。然后,我们使用`http.ListenAndServe`方法来启动一个HTTP服务器,它监听在本地的8080端口上。```go func main() { http.HandleFunc("/file", func(w http.ResponseWriter, r *http.Request) { http.ServeFile(w, r, "path/to/file") }) http.ListenAndServe(":8080", nil) } ```
如上所示,我们定义了一个处理函数,它将请求的URL路径为"/file"的请求映射到本地的一个文件。当客户端发起请求时,我们使用`http.ServeFile`方法来将文件内容作为响应返回给客户端。```go func logger(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { log.Printf("[%s] %q", r.Method, r.URL.String()) next.ServeHTTP(w, r) }) } func main() { http.Handle("/", logger(http.HandlerFunc(handler))) http.ListenAndServe(":8080", nil) } ```
在上述代码中,我们定义了一个`logger`中间件函数,它接收一个实现了`http.Handler`接口的参数,然后返回一个新的`http.Handler`。在这个中间件中,我们打印了每个请求的方法和URL信息,然后调用下一个处理函数来处理请求。 最后,在`main`函数中,我们使用`http.Handle`方法绑定我们的处理函数并应用`logger`中间件。