Golang net/http
时间: 2024-01-19 21:04:50 浏览: 139
Golang的net/http是一个非常强大的包,用于创建HTTP服务器和客户端。它提供了很多功能,包括路由、中间件、Cookie管理、TLS支持等。以下是一些常用的功能:
1. 创建HTTP服务器
使用http.ListenAndServe(addr string, handler http.Handler)函数来创建一个HTTP服务器。addr是服务器的地址,handler是对请求的处理程序。例如,以下代码创建一个简单的HTTP服务器:
```go
package main
import (
"fmt"
"net/http"
)
func main() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello, %q", r.URL.Path)
})
http.ListenAndServe(":8080", nil)
}
```
2. 路由
可以使用http.HandleFunc()函数来设置路由。例如,以下代码将处理根目录的请求:
```go
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
// 处理请求
})
```
3. 中间件
可以使用http.HandlerFunc()函数来处理中间件。例如,以下代码将记录访问日志:
```go
func Logger(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
log.Printf("%s %s", r.Method, r.URL.Path)
next.ServeHTTP(w, r)
})
}
func main() {
http.Handle("/", Logger(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello, %q", r.URL.Path)
})))
http.ListenAndServe(":8080", nil)
}
```
4. Cookie管理
可以使用http.Cookie和http.SetCookie函数来设置和获取Cookie。例如,以下代码将在响应中设置Cookie:
```go
cookie := &http.Cookie{
Name: "username",
Value: "john",
}
http.SetCookie(w, cookie)
```
5. TLS支持
可以使用http.ListenAndServeTLS()函数来启用TLS支持。例如,以下代码将启用TLS:
```go
http.ListenAndServeTLS(":443", "cert.pem", "key.pem", nil)
```
以上是一些常见的Golang net/http的用法,它们可以帮助你创建一个功能强大的HTTP服务器和客户端。
阅读全文