马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
1. 极简服务器
大道至简。利用Go语言构建天下上最简单的HTTP服务器,仅需四行代码。
标准库的net/http包提供了多种用于创建HTTP服务器的方法,此中包括:
- http.HandleFunc("/", rootHandler)
第一参数:访问的url
第二参数:处置处罚哀求的函数,创建路由,为不同的访问路径指定不同的处置处罚函数
- http.ListenAndServe(":8000", nil)
针对给定访问路径的处置处罚函数必要自己实现,该函数形如:
- func rootHandler(w http.ResponseWriter, r *http.Request) {
- w.Write([]byte("Hello World!"))
- }
- 该函数肯定包括两个参数http.ResponseWriter和*http.Request
- 该函数的两个参数一个代表响应,即用于构造响应包的写入器,用于写入返回给浏览器的信息;另一个则代表哀求。
- 该函数的核心任务就是根据哀求中的各种输入数据,举行业务处置处罚,产生响应输出。
- // 最简单的HTTP服务器
- // 标准库的net/http包提供了多种创建HTTP服务器的方法,它还提供了一个基本的路由器
- package main
- import "net/http"
- func rootHandler(w http.ResponseWriter, // 定义路由处理函数
- r *http.Request) {
- w.Write([]byte("Hello World!"))
- }
- func main() {
- http.HandleFunc("/", rootHandler) // web资源访问地址为 "资源根路径/"
- http.ListenAndServe(":8000", nil)
- }
复制代码
2.哀求与响应
(一)利用curl发送哀求:
除了通过浏览器向HTTP服务器发起哀求并接收响应以外,还可以利用更专业化的工具,比如curl,来检察往返于客户端和服务器之间哀求响应数据包。
Linux和macOS操纵系统通常都预先安装了curl工具,Windows操纵系统固然没有预先安装,但可以从这里免费下载并安装:
- https://curl.haxx.se/windows
curl安装好以后,就可以在开辟HTTP服务器时,用它做客户端向服务器发送各种哀求,并检察服务器的响应。
- 首先启动前面编写的"极简服务器"程序。
- 打开终端或命令提示符窗口,输入如下命令:
- curl -is "http://localhost:8000"
- 选项-is指定打印包头,并忽略一些次要信息
- 如果命令实行乐成,将看到来自HTTP服务器的响应,此中包罗响应头和响应体。
服务器返回的响应头包罗了如下信息:
- HTTP/1.1 200 OK //协议,状态码,状态描述
- Date: Sat, 29 Dec 2018 06:28:05 GMT //发送响应的日期和时间(格林威治时间)
- Content-Length: 12 //内容长度共12个字节
- Content-Type: text/plain; charset=utf-8 //内容类型为利用UTF-8编码的纯文本
服务器返回的响应体包罗了如下信息:
- Hello World! //由12字节UTF-8编码纯文本构成的响应内容
(二)路由
HandleFunc函数用于注册响应给定URL地址映射的处置处罚函数。
- http.HandleFunc("/", rootHandler)
- http.HandleFunc("/users/", usersHandler)
- http.HandleFunc("/projects/", projectsHandler)
服务器依据如下路由规则,将对特定URL地址的访问路由到相应的处置处罚函数
- URL地址必须完全匹配,包括大小写和斜杠。
- 对"/projects"的访问,不会被路由到与"/projects/"相对应的处置处罚函数projectsHandler。
- 如果找不到严格匹配的URL地址,则一律按"/"处置处罚,因此"/"也被称为缺省路由。
- 路由与哀求类型无关,只负责调用与URL地址相对应的函数。
- 对每一种哀求类型(GET、POST、PUT、DELETE等)的详细处置处罚在处置处罚函数的内部实现。
附录:CURL命令相关参数
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |