从HTTP协议、到GO语言的net/http包,到搭建一个简单的WEB

HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从服务器传输超文本到本地浏览器的传输协议,是客户端浏览器或其他程序与Web服务器之间的应用层通信协议,包含命令和传输信息.

当我们在浏览器的地址栏里输入的网站地址URL (Uniform Resource Locator,统一资源定位符)。或是单击一个超级链接时,URL就确定了要浏览的地址。浏览器通过HTTP,将Web服务器上相应站点的网页代码提取出来,并翻译成漂亮的网页。

其工作过程可分为四步:

a 首先客户机与服务器建立连接。只要单击某个超级链接,HTTP的工作就开始了。

b 建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息内容。

c 服务器接到请求后,给予相应的响应信息,

d 客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器断开连接。

下面利用Go语言提供的net/http包,来搭建起来一个可以运行的web服务。

上代码:

1 package main

2

3 import (

4 "io"

5 "log"

6 "net/http"

7 )

8

9 func helloHandler(w http.ResponseWriter, r *http.Request) {

10 io.WriteString(w, "你好, 路漫漫其修远兮!")

11 }

12 func main() {

13 http.HandleFunc("/hello", helloHandler) //分发请求

14 err := http.ListenAndServe(":8080", nil)

15 if err != nil {

16 log.Fatal("ListenAndServe: ", err.Error())

17 }

18 }

代码截图:

图一

代码解释:

1 http.HandleFunc(),该方法用于分发请求,即针对某一路径(这里是hello)请求将其映射到指定的业务逻辑处理方法中。

2 http.HandleFunc()方法有两个参数,第一个参数是HTTP请求的目标路径"/hello",第二个参数指定具体的回调方法,helloHandler。

3 helloHandler() 方法两个参数:http.ResponseWriter(服务器需要反馈给客户端的信息)和http.Request(用户请求的信息)。

3 我们将字符串"你好, 路漫漫其修远兮! "写入http.ResponseWriter的w中,即可将该字符串数据发送到HTTP客户端。第二个参数r *http.Request表示的是此次HTTP请求的一个数据结构体,即代表一个客户端,该示例中尚未用到它。

5 http.ListenAndServe(),该方法用于在示例中监听 8080 端口,接受并调用内部程序来处理连接到此端口的请求。如果端口监听失败,会调用log.Fatal()方法输出异常出错信息。

好了,这就搭建一个简单的Web。

运行go run nihao.go然后访问 http://localhost:8080/hello,看到输出的结果:

图二

分享成果,随喜正能量。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180421A167NB00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券