Go语言服务端处理HTTP、HTTPS请求

  • 内容
  • 评论
  • 相关

本节我们主要来介绍一下使用Go语言编写的 HTTP 服务端是如何处理 HTTP 和 HTTPS 请求的。

处理 HTTP 请求

使用 net/http 包提供的 http.ListenAndServe() 方法,可以对指定的地址进行监听,开启一个 HTTP,服务端该方法的原型如下:

func ListenAndServe(addr string, handler Handler) error

该方法用于在指定的 TCP 网络地址 addr 进行监听,然后调用服务端处理程序来处理传入的连接请求。

ListenAndServe 方法有两个参数,其中第一个参数 addr 即监听地址,第二个参数表示服务端处理程序,通常为空。第二个参数为空时,意味着服务端调用 http.DefaultServeMux 进行处理,而服务端编写的业务逻辑处理程序 http.Handle() 或 http.HandleFunc() 默认注入 http.DefaultServeMux 中,代码如下所示:

http.Handle("/foo", fooHandler)
http.HandleFunc("/bar", func(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "Hello, %q", html.EscapeString(r.URL.Path))
})
log.Fatal(http.ListenAndServe(":8080", nil))

如果想更多地控制服务端的行为,可以自定义 http.Server,代码如下所示:

s := &http.Server{
    Addr: ":8080",
    Handler: myHandler,
    ReadTimeout: 10 * time.Second,
    WriteTimeout: 10 * time.Second,
    MaxHeaderBytes: 1 << 20,
}
log.Fatal(s.ListenAndServe())

下面通过一个简单的服务端示例来演示一下Go语言是如何处理 HTTP 请求的,代码如下所示:

package main

import (
    "io"
    "log"
    "net/http"
)

func HelloServer(w http.ResponseWriter, req *http.Request) {
    io.WriteString(w, "C\n")
}
func main() {
    http.HandleFunc("/hello", HelloServer)
    err := http.ListenAndServe(":12345", nil)
    if err != nil {
        log.Fatal("ListenAndServe: ", err)
    }
}

成功运行上面的代码会占用 12345 端口,我们可以使用浏览器访问http://localhost:12345/hello来查看运行结果,如下所示:

本文标题:Go语言服务端处理HTTP、HTTPS请求

本文地址:https://www.hosteonscn.com/6000.html

评论

0条评论

发表评论

邮箱地址不会被公开。 必填项已用*标注