http协议基础
1. 网络7层模型
OSI -- Open System Interconnection
背景: 制定的一个用于计算机或通信系统间互联的标准体系
2. 网络5层模型
3. http发展历史
- Http 0.9 -- 只有一个Get方法,没有head描叙数据信息
- Http 1.0 -- 新增POST DELETE PUT HEAD 等方法 + header部分 + status code(服务端处理该请求响应的状态)
- Http 1.1 -- 长连接 + pipeline(可以同时多个请求,但串行处理) + host
- Http 2.0 -- 数据以二进制发送,压缩头部与服务器主动推送,同一个连接里发送多个请求可以并行处理
4. Http请求原理
- http请求是建立在TCP连接之上的
5. URL
Uniform Resoure Locator -- 同一资源定位符
http://ip:port/path?query=string#hash
- ip -- 服务器主机IP地址或对应的域名
- Port -- 提供Web服务程序监听端口
- /path -- 资源路径 -- restful风格中是名词 -- 类似文件系统目录结构
- ?query=string& -- query string GET方法使用的查询参数
- hash -- 锚点 -- 浏览器窗口定位到页面的某个区域
6. 报文
- 请求报文
- Method 请求的方法 -- restful语义:
- GET -- 查询
- POST -- 新增
- PUT -- 修改多个记录
- PATCH -- 修改单个记录
- DELETE -- 删除记录
- Method 请求的方法 -- restful语义:
- 响应报文
- Http code -- 定义服务器对请求处理的结果
- Demo
package main
import (
"log"
"net/http"
)
func main() {
// 定义路由
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
n, err := w.Write([]byte("ok"))
if err != nil {
log.Println(err)
}
log.Println(n)
})
// 启动http服务
err := http.ListenAndServe(":8888", nil)
if err != nil {
log.Fatalln(err)
}
}
- ISO -- 国际标准化组织