这是我参与「第三届青训营 -后端场」笔记创作活动的的第4篇笔记。
主要内容
- HTTP 协议相关知识
- HTTP 框架的设计与实现
背景
HTTP 协议相关知识
一个常见的 POST请求在协议层究竟做了什么?
Post请求和get请求的区别
- get是从服务器上获取数据,post是向服务器传送数据。
- get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTPpost机制,将表单内各个字段与其内容放置在HTMLHEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。
- 对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。
- get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。
- get安全性非常低,post安全性较高。但是执行效率却比Post方法好。
HTTP 框架的应用层设计与中间件设计
-
分层设计理念 盖尔定律:一个切实可行的复杂系统势必是从一个切实可行的简单系统发展而来的。从头开始设计的复杂系统根本不切实可行,无法修修补补让它切实可行。你必须由一个切实可行的简单系统重新开始。
-
应用层设计 提供合理的 APl
- 可理解性:如ctx.Body (),ctx.GetBody () ,不要用ctx.BodyA()
- 简单性:如ctx.Request.Header. Peek(key)/ctx.GetHeader (key)
- 中间件设计
- 配合Handler实现一个完整的请求处理生命周期
- 拥有预处理逻辑与后处理逻辑
- 可以注册多中间件
- 对上层模块用户逻辑模块易用