摘要:Go语言[1]是谷歌公司于2009发布的第二款开源编程语言,它的作者是Robert Griesemer,Rob Pike 和 Ken Thompson。Go语言专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程,更适合于当今的互联网和云计算[2]开发。Go 语言对Web有很好的支持,Go语言里面提供了一个完善的net/http包,通过http包可以很方便的就搭建起来一个可以运行的Web服务。本文介绍了如何使用Golang语言的来快速的搭建Web服务器[3]。
关键词:Golang语言;HTTP协议;Web服务器
提到Web,就不能不提到互联网,Web的全称是World Wide Web,中文译为万维网。今天,互联网已经越来越深入的影响着人们的生活,而Web在互联网的发展过程中起着至关重要的作用,Web是运行在互联网中的一个超级巨大的分布式系统,它的设计初衷是一个静态信息发布媒介,通过HTML语言描述资源信息,通过HTTP协议传递数据,通过统一资源标识符定位资源,这三部分构成了Web技术的核心基石。Web的发展也经历了好几个阶段,从最初的Web 1.0,主要用来做信息的静态显示,到后来的Web 2.0,动态网页技术阶段,加强了用户和网站之间的互动,然后到达移动互联Web 3.0时代的到来,HTML5技术[4]得到了越来越广泛的应用。Golang语言被称为互联网时代的C语言,它具有C语言简洁和高效的特点,并且提供了现代互联网后台开发中需要的各种特性,让开发者在语言级别就可以得到自己想要的特性。Golang语言自身提供的标准库包含了 net/http库,这个http包提供了HTTP客户端和服务端的实现,可以很方便的进行Web相关操作,本文介绍如何利用Golang语言来搭建一个Web服务器。
1 Golang语言Web工作原理
下面首先对使用Golang语言的Web服务器工作原理进行分析。
1.1Go语言Web服务器相关对象
在浏览器中输入要访问的网页的URI地址后,浏览器会向Web服务器发出请求。在Golang语言中,Web服务器收到的请求被称为是Request对象,Web服务器从Request对象中解析出用户的请求信息,包括Request用户要访问的具体页面、通过POST方法传递给服务器的信息、用户浏览器中Cookie中保存的数据等等。Web服务器处理完成后,会向客户端浏览器返回数据,Response对象用来表示Web服务器向浏览返回的数据,包括返回给浏览器的HTML页面等内容。浏览器和Web服务器之间的网络连接用conn对象表示,可以conn对象获取连接相关信息。Web服务器中处理浏览器请求和生成返回数据的处理逻辑被封装成Handler对象。
1.2Golang语言Web服务的工作流程
首先,Web服务器为了监听来自浏览器的请求,首先要建立Listen Socket,在指定的端口监听,等待客户端请求的到来。Listen Socket监听到来自客户端的请求,生成Client Socket,用Client Socket与浏览器通信。之后处理来自客户端的请求,首先从Client Socket读取来自客户端的HTTP协议的头部数据,分析Request请求是GET还是POST方法,如果是POST方法,还需要读取客户端发送给Web服务器的数据,然后交给相应的Handler处理,Handler处理完成后生成发送回客户端的数据,通过Client Socket发送回客户端,这样,Web服务器就完成了一次典型的Web服务器访问处理流程。
2 Golang语言搭建Web服务器程序实现
分析了使用Golang语言实现Web服务器相关的对象和概念、1.2Golang语言Web服务的工作流程后,我们来讨论下如何使用Golang语言来完成程序的实现。
使用Golang语言搭建Web服务器的程序实现,我们的实现主要包括两个函数,第一个是main函数,它负责处理Web服务器的主要工作流程,另外一个函数命名为responseToClient函数,它是Handler函数,用来处理浏览器发来的请求信息,并且生成返回给客户端浏览器的数据。
Golang语言Web服务器实现包含在标准库net/http中,因此要在程序中导入这个库,除此还需要导入fmt和log库。
期刊文章分类查询,尽在期刊图书馆
Main函数是Golang语言运行的主体函数,这个函数包含了Web服务器的整体处理流程,首先设置网站根路径的Handler函数为responseToClient,然后启动Web服务器在8080端口监听客户端浏览器的访问请求,如果遇到错误,就将出错消息输出并且退出程序。其主要代码如下:
func main() {
//设置访问的路由以及Handler
http.HandleFunc("/",responseToClient)
//设置监听的端口
err := http.ListenAndServe(":8080",nil)
if err != nil {
log.Fatal("ListenAndServe: ",err)}
}
responseToClient函数用来处理客户端浏览器发送来的请求,并且向客户端浏览器返回数据。这个函数的实现很简单,首先解析客户端发送来的Request参数,然后简单的向客户端返回Hello World数据。其主要代码如下:
func responseToClient
(w http.ResponseWriter,
r *http.Request)
{
//解析参数,默认是不会解析的
r.ParseForm()
//写到w的数据会发送到客户端
fmt.Fprintf(w,"Hello Wrold!")
}
将程序代码保存到goWebServer.go文件中,打开命令行,在命令行中运行go run goWebServer.go命令启动Web服务器,在浏览器中访问localhost:8080就可以看到从Web服务器返回的数据。
3 结论
从本文中讲述的利用Golang语言搭建Web服务器的例子可以发现利用Golang语言中的net/http库可以很方便的Web应用程序。在当今的云计算、移动互联技术得到广泛应用的时代,使用Golang语言可以高效的开Web服务应用,必将得到程序开发人员的广泛欢迎,获得越来越广泛的影响力。
参考文献
[1]陈希,胡彬.Go语言在国产CPU平台上应用前景的探索与思考.电子技术应用,2018,8.
[2]陈康,郑纬民.云计算:系统实例与研究现状.软件学报,2009,5.
[3]范国闯,钟华,黄涛,冯玉琳.Web应用服务器研究综述.软件学报,2003,10.
[4]刘华星,杨庚.HTML5——下一代Web开发标准研究.计算机技术与发展,2011,08.
作者简介:付宇,武汉软件工程职业学院信息学院教师,硕士,研究方向:云计算,大数据,信息安全。
曹廷,武汉软件工程职业学院计算机学院教师,硕士,研究方向:移动互联,图像处理,前端技术。
论文作者:付宇 曹廷
论文发表刊物:《知识-力量》2019年8月27期
论文发表时间:2019/6/10
标签:语言论文; 服务器论文; 客户端论文; 数据论文; 浏览器论文; 互联网论文; 函数论文; 《知识-力量》2019年8月27期论文;