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

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

记得看完前两章先哟

HTTP响应数据包结构

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

Python 使用 Socket 从零写一个HTTP服务器(三)_第1张图片

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

Python 使用 Socket 从零写一个HTTP服务器(三)_第2张图片

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

实现Hello World/实现网页响应

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

Python 使用 Socket 从零写一个HTTP服务器(三)_第3张图片

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

Python 使用 Socket 从零写一个HTTP服务器(三)_第4张图片

我们使用浏览器访问一下

Python 使用 Socket 从零写一个HTTP服务器(三)_第5张图片

浏览器访问

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

Python 使用 Socket 从零写一个HTTP服务器(三)_第6张图片

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

构建响应数据包

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

Python 使用 Socket 从零写一个HTTP服务器(三)_第7张图片

我们来看一下效果!

Python 使用 Socket 从零写一个HTTP服务器(三)_第8张图片

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

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

Python 使用 Socket 从零写一个HTTP服务器(三)_第9张图片

响应头的重要性

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

Python 使用 Socket 从零写一个HTTP服务器(三)_第10张图片

那如果我们加上呢

Python 使用 Socket 从零写一个HTTP服务器(三)_第11张图片

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

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

 

你可能感兴趣的:(Python,Socket,从零写一个HTTP服务器,python,http,web,socket)