发布时间:2024-12-23 04:47:58
下面是一个简单的例子,展示了如何创建一个HTTP处理器:
```go package main import ( "net/http" "fmt" ) type MyHandler struct {} func (h *MyHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { fmt.Fprint(w, "Hello, World!") } func main() { handler := &MyHandler{} http.ListenAndServe(":8080", handler) } ``` 在上面的例子中,我们定义了一个结构体MyHandler,并实现了ServeHTTP方法。在ServeHTTP方法中,我们使用fmt.Fprint函数向ResponseWriter对象写入了一条消息。最后,我们通过调用http.ListenAndServe函数来启动一个HTTP服务器,并将MyHandler对象传递给它。下面是一个简单的例子,展示了如何使用路由器来处理HTTP请求:
```go package main import ( "net/http" "fmt" ) func handler1(w http.ResponseWriter, r *http.Request) { fmt.Fprint(w, "Handler 1") } func handler2(w http.ResponseWriter, r *http.Request) { fmt.Fprint(w, "Handler 2") } func main() { mux := http.NewServeMux() mux.HandleFunc("/path1", handler1) mux.HandleFunc("/path2", handler2) http.ListenAndServe(":8080", mux) } ``` 在上面的例子中,我们通过调用http.NewServeMux函数创建了一个新的路由器。然后,我们使用mux.HandleFunc方法将不同的URL路径与相应的处理器函数进行关联。最后,我们将mux传递给http.ListenAndServe函数来启动服务器。下面是一个示例,展示了如何使用ResponseWriter对象来返回JSON数据:
```go package main import ( "net/http" "encoding/json" ) type Response struct { Message string `json:"message"` } func handler(w http.ResponseWriter, r *http.Request) { response := Response{ Message: "Hello, World!", } w.Header().Set("Content-Type", "application/json") json.NewEncoder(w).Encode(response) } func main() { http.HandleFunc("/", handler) http.ListenAndServe(":8080", nil) } ``` 在上面的例子中,我们定义了一个名为Response的结构体,它包含了一个字段Message。在handler函数中,我们创建了一个Response对象,并使用json.NewEncoder函数将其编码成JSON格式。然后,我们使用ResponseWriter的Header方法设置了返回头部的内容类型,并使用json.NewEncoder(w).Encode方法将编码后的JSON数据写入ResponseWriter。下面是一个示例,展示了如何在Golang中处理HTTPS返回:
```go package main import ( "net/http" "fmt" "crypto/tls" ) func handler(w http.ResponseWriter, r *http.Request) { fmt.Fprint(w, "Hello, HTTPS!") } func main() { http.HandleFunc("/", handler) server := &http.Server{ Addr: ":8443", TLSConfig: &tls.Config{ InsecureSkipVerify: true, }, } server.ListenAndServeTLS("cert.pem", "key.pem") } ``` 在上面的例子中,我们首先创建了一个HTTP处理器函数handler,该函数负责返回一条消息。然后,我们创建了一个http.Server对象,并将地址设置为":8443",表示服务器将在此端口上监听HTTPS请求。我们还通过设置InsecureSkipVerify字段为true来忽略对服务端证书的验证。 最后,我们通过调用server.ListenAndServeTLS函数来启动HTTPS服务器,并指定cert.pem和key.pem作为证书和密钥文件。