哦吼!!终于开始处理响应数据包了, 我们就可以实现hello world了!!!

记得看完前两章先哟

HTTP响应数据包结构

老规矩我们先来看一下HTTP响应数据包的结构

Python 使用 Socket 从零写一个HTTP服务器(三)

看起来和请求头结构差不多呢, 我们来看一下实际数据

Python 使用 Socket 从零写一个HTTP服务器(三)

OK, 这里就不带进去结构里看了!!,我们来试着上手写一个Hello world!

实现Hello World/实现网页响应

我们先创建一个views文件, 新建一个函数index将我们的在请求数据包中解析的数据传给该函数

Python 使用 Socket 从零写一个HTTP服务器(三)

记得在主文件中调用哟!然后使用send方法发送回去, 记得使用encode编码

Python 使用 Socket 从零写一个HTTP服务器(三)

我们使用浏览器访问一下

Python 使用 Socket 从零写一个HTTP服务器(三)

浏览器访问

wow运行成功了,但是我们根本没有构建一个规范的HTTP响应数据包, 我们来看一下开发者工具中 network 抓到的数据包吧

Python 使用 Socket 从零写一个HTTP服务器(三)

哦吼可以看到他没解析到响应头, 那我们来构建一下吧

构建响应数据包

其实看似请求头多得不行!但实际上呀...必要的就一个, Content-Length 响应数据的长度!我们来做点实验, 比如输入长度 10 的数据。但Content-length值为5会是什么样的效果呢

Python 使用 Socket 从零写一个HTTP服务器(三)

我们来看一下效果!

Python 使用 Socket 从零写一个HTTP服务器(三)

ohhhh, 根据规范他只读取了我们响应头写上的长度的数据

可能你用PostMan会发现, 哎?? 怎么拿不到数据, 但是你会发现你只要写好你的HTML语句他就能识别了... 这是PostMan软件自己的验证

Python 使用 Socket 从零写一个HTTP服务器(三)

响应头的重要性

当然请求头的附带信息也十分重要, 比如我们返回一个JSON数据, 而不标注数据类型他是这样的

Python 使用 Socket 从零写一个HTTP服务器(三)

那如果我们加上呢

Python 使用 Socket 从零写一个HTTP服务器(三)

可以看到这就是响应头的重要性!!这就是规范的重要性, 我们需要根据我们的需求来构建我们的响应数据包, 

OK我们简单的服务器原型就制作完成了,但是只能提供一次服务而且还是不验证路由的,也就是说你请求我服务器地址我都是返回同样的数据... 剩下的大家各自发挥想象吧

 

相关文章: