如何建立一个网站并运行(Go Web编程实战(8)——创建HTTP与HTTPS服务器端)

创建一个HTTP服务端

实际上,Go语言创建了一个简单的HTTP服务器程序,类似于Java Web的servlet。例如,这里我们创建了一个程序,它只打印“Hello World”。代码如下:

包主 导入( & # 34;fmt & # 34 & # 34;net/http & # 34; ) func hello world(w http。ResponseWriter。请求){ fmt。Fprintf(w,& # 34;你好世界& # 34;) } func main(){ server:= & http。服务器{ 地址:& # 34;127.0.0.1:80", } http。handle func(& # 34;/",Hello World) server . listenndserver() }运行后,在浏览器的网页输入框中输入127.0.0.1,会出现一个简单的“Hello World”网页。

这里我们可以发现,如果需要通过Go语言创建服务器,就需要了解net/http包的内部逻辑。如果只看main()函数中的代码,会发现它调用了HandleFunc()函数和ListenAndServe()函数。

ListenAndServe()

在Go语言中,ListenAndServe()函数有两个参数,第一个是监视器的端口号,第二个是事件处理程序。处理程序接口定义如下:

Type handler接口{ server http(response writer,* request) }只要实现了这个接口,就可以实现自己的handler处理器了。具体实现方法如下:

类型处理程序func func(响应编写器,*请求) func (f处理程序func)服务器http (w响应编写器,r *请求){ f (w,r) }处理程序处理器类似于Java SpringMVC框架中的拦截器,是一个拦截器。它发生在http的处理逻辑之前。HandlerFunc()函数。

ServeHTTP()方法的使用示例

如果我们需要认识到,在HTTP发送请求时,只有使用指定的refer参数才能成功调用请求,否则将返回403状态。例子如下:

定义Refer结构体

type refer struct { handler http . handler refer string }这里可以看到,作者定义了两个对象,handler和用户定义的refer。

实现ServeHTTP()方法

完整的代码如下:

包主 导入( & # 34;fmt & # 34 & # 34;net/http & # 34; ) 类型引用结构{ 处理程序http。handler Refer string } func(this * Refer)serve http(w http。ResponseWriter。request){ if r . Referer()= = this . refer { this . handler . serve http(w,r) } else { w . write header(403) } } func my handler(w http。ResponseWriter。request){ w . Write([]byte(& # 34;这是训导员& # 34;)) } func hello world(w http。ResponseWriter。请求){ fmt。Fprintf(w,& # 34;你好世界& # 34;) } func main(){ referer:= & Refer { handler:http。HandlerFunc(myHandler), refer:& # 34;www . Liyuan Jing . com & # 34;, } http。handle func(& # 34;/你好& # 34;,helloworld) http。ListenAndServe(& # 34;:80",referer) }此时如果运行后直接进入127.0.0.1,网页会显示拒绝访问。



创建一个HTTPS服务端

在Go语言中,net/http包中提供了创建HTTPS服务的方法,定义如下:

FUNC(SRV * server)Listenandserverls(certfile,keyfile string)错误通过上面的方法,我们可以知道创建HTTPS服务只需要两个参数。第一个参数是证书文件的路径,第二个参数是私钥文件的路径。

在创建HTTPS服务之前,我们需要创建这两个文件。不过一般能在网上流通的证书都是付费的。虽然有些证是免费的,但是比较麻烦。所以,这里的博主只是一个例子,仅供自己使用。

创建证书与私钥

首先,您需要确保计算机下载并且openssl配置正确。如果您已经下载了配置,您可以直接使用下面的命令行来创建证书和私钥。

怎么运营一个网站

opensslreq-new key RSA:2048-nodes-key out server . key-x509-days 365-out server . CRT执行此命令后,命令行的输出如下。在这里,读者可以随意输入。





执行这些命令后,将在该目录中自动生成两个文件server.crt和server.key。接下来,我们可以使用这两个文件来创建我们自己的HTTPS服务器。

创建HTTPS服务端

话不多说,这里直接是代码,例子如下:

包主 导入( & # 34;net/http & # 34; ) func handle(w http。ResponseWriter。request){ w . Write([]byte(& # 34;你好,世界HTTPS & # 34;)) } func main(){ server:= & http。服务器{地址:& # 34;:80",处理程序:http。HandlerFunc(handle)} 服务器。ListenAndServeTLS(& # 34;server.crt & # 34, "server.key & # 34) }运行后网页不会输出Hello World HTTPS,那是因为这样创建的HTTPS相关证书是不被互联网认可的,但这就是创建的过程。



您可以还会对下面的文章感兴趣

使用微信扫描二维码后

点击右上角发送给好友