发布时间:2024-11-24 07:13:45
下面是一个简单的示例代码,展示了如何创建一个最基本的HTTP服务器,并处理根请求:
```go package main import ( "fmt" "net/http" ) func main() { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hello, World!") }) http.ListenAndServe(":8080", nil) } ``` 在上述代码中,我们使用`http.HandleFunc()`方法将根URL路径`/`与一个处理函数关联起来。当有请求访问根URL时,我们通过`fmt.Fprintf()`方法向响应写入"Hello, World!"。下面是一个使用Golang Web包实现路由和中间件的示例代码:
```go package main import ( "fmt" "net/http" ) func main() { router := http.NewServeMux() router.HandleFunc("/", Logger(HelloHandler)) http.ListenAndServe(":8080", router) } func HelloHandler(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hello, World!") } func Logger(next http.HandlerFunc) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { fmt.Println("Logging...") next.ServeHTTP(w, r) } } ``` 在上述代码中,我们首先创建了一个新的ServerMux实例,并使用`http.NewServeMux()`方法进行初始化。然后,我们将根URL路径`/`与一个处理函数`HelloHandler`关联起来,并将其包装在一个名为Logger的中间件函数中。此中间件函数在调用处理函数之前打印日志,并在处理函数完成后继续处理流程。下面是一个使用Golang Web包处理Cookie和会话的示例代码:
```go package main import ( "fmt" "net/http" "time" ) func main() { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { // 设置Cookie expiration := time.Now().Add(24 * time.Hour) cookie := http.Cookie{Name: "username", Value: "John", Expires: expiration} http.SetCookie(w, &cookie) // 读取Cookie username, err := r.Cookie("username") if err != nil { fmt.Fprintf(w, "Error reading cookie: %s", err.Error()) return } fmt.Fprintf(w, "Hello, %s!", username.Value) }) http.ListenAndServe(":8080", nil) } ``` 在上述代码中,我们通过`http.SetCookie()`方法设置了一个名为"username"的Cookie,并将其保存到响应的HTTP头中。接着,我们通过`r.Cookie()`方法读取了名为"username"的Cookie,并将其值打印到响应中。