读源码-Gunicorn篇-5-协议
本节说明
本节的标题是——协议,有两层意思,一个是用户请求的协议 HTTP
,另一个是 gunicorn
解析请求后,与我们的应用交互的 WSGI
协议,本章节将分两个部分分别讨论。
开始前,我们先回顾一下 HTTP
协议。
HTTP 协议
HTTP 请求
一个完整的 HTTP
请求包含四个部分:
- 请求行:请求方法 +
URL
+HTTP
版本 - 请求头:包含各种元数据信息
- 空行:分隔头部和消息体
- 请求体:包含要发送的数据(可选)
示例:
1 | GET /hello?a=123 HTTP/1.1 |
HTTP 响应
一个完整的 HTTP
响应结构也包含四个部分:
- 状态行:
HTTP
版本 + 状态码 + 状态描述 - 响应头:服务器返回的元数据信息
- 空行:分隔响应头和响应体
- 响应体:实际返回的数据内容(可选)
示例:
1 | HTTP/1.1 200 OK |
在 HTTP
请求和响应中,除了请求体和响应体部分,其它的可以看作是纯文本的内容。
参照上边的例子,我们来看一下一个用户请求是如何解析交给 WSGI
应用的。