HTTP协议
一、HTTP
HTTP:HTTP是超文本传输协议(Hypertext Transfer Protocol)
协议需要明确信息的开始和结束在什么时候——明确边界。以及它能够携带什么信息,信息的类型又是什么。
协议里有什么?
- 请求行/状态行
- 请求头/响应头
- 请求体/响应体 请求行:方法名、URL、协议版本 状态行:协议版本、状态码、状态码描述
讲解Demo
func main()
{
h :=sever.New()
h.POST("/sis",func(c context.Context,ctx*app.RequestContext){
ctx.Data(200,"text/plain;charset=utf-8",[]byte("OK"))
})
h.Spin()
}
方法:POST
URL:/sis
业务逻辑:ctx.Data(200,"text/plain;charset=utf-8",[]byte("OK")
二、请求流程
- 业务层
- 服务治理层(中间层) ——可记录整个业务的耗时
- 路由层
- 协议编(解)码层
- 传输层
三、不足
- HTTP1:队头阻塞,传输效率低,明文传输不安全
- HTTP2:多路复用,头部压缩,二进制协议
- QUIC:基于UDP实现,解决队头阻塞,加密减少握手次数,支持快速启动
四、HTTP框架的设计与实现
4.1分层设计
OSI七层网络模型:
- 应用层
- 表示层
- 合适层
- 传输层
- 网络层
- 数据链路层
- 物理层
在进行分层设计时,需考虑高内聚、低耦合、易复用和高扩展性。
收获
在本节内容中,初步认识了什么是HTTP协议,在之前对它模糊的概念又进一步的了解了。同时学习到了协议的基本组成有些什么。对请求的流程有了清晰的认识,知道了OSI有哪七层。