简介
Go语言内建Web服务器功能。标准库中的net / http包包含有关HTTP协议的所有功能,包括HTTP客户端和HTTP服务器。 在此示例中,你将了解创建一个可在浏览器中查看的Web服务器有多么简单。
注册请求处理程序
首先,创建一个处理程序,该处理程序从浏览器、HTTP客户端或API请求接收所有传入的HTTP连接。 Go中的处理程序是具有以下特征的函数:
func (w http.ResponseWriter, r *http.Request)
函数接收两个参数:
http.ResponseWriter,可向其写入文本、http响应;
http.Request,包含有关此HTTP请求的所有信息,包括URL、header等内容。
将请求处理程序注册到默认的HTTP Server就是这样简单:
http.HandleFunc("/", func (w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello, you've requested: %s\n", r.URL.Path)
})
监听http连接
请求处理程序本身不能接受来自外部的任何HTTP连接。HTTP服务器必须监听端口,以便将接收到的连接传递给请求处理程序。大多数情况下80端口是HTTP流量的默认端口,所以此服务器也将侦听它。
下面的代码将启动Go的默认HTTP服务器,并侦听端口3456上的连接。浏览器访问http://localhost/,将服务器正在处理请求。
http.ListenAndServe(":3456", nil)
若监听80端口,可能会提示没有权限,需要root权限。
代码
package main
import (
"fmt"
"net/http"
)
func main() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello, you've requested: %s\n", r.URL.Path)
})
http.ListenAndServe(":3456", nil)
}