Python探索之实现一个简单的HTTP服务器


Posted in Python onOctober 28, 2017

Python标准库中的BaseHTTPServer模块实现了一个基础的HTTP服务器基类和HTTP请求处理类。这在文章python探索之BaseHTTPServer-实现Web服务器介绍中进行了相关的介绍。然而,BaseHTTPServer模块中并没有定义相关的请求方法,诸如GET、HEAD、POST等。在BaseHTTPServer模块的基础上,Python标准库中的SimpleHTTPServer模块实现了简单的GET、HEAD请求。

在该模块中,它沿用了BaseHTTPServer模块中实现的HTTPServer服务器,这里就不再赘述。而请求处理类则是继承了BaseHTTPServer模块中的BaseHTTPRequestHandler类。SimpleHTTPServer模块实现了具有GET、HEAD请求方法的HTTP通信服务。根据文章python探索之BaseHTTPServer-实现Web服务器介绍中的介绍,只需要在请求处理类中定义do_GET()和do_HEAD()方法即可。

do_GET()

do_GET()方法的源码如下:

def do_GET(self):
 """Serve a GET request."""
 f = self.send_head()
 if f:
  try:
   self.copyfile(f, self.wfile)
  finally:
   f.close()

在这个方法中,它调用了send_head()方法来返回一个响应。send_head()方法会调用send_response()、send_header()、send_error()方法等设置响应报文等。

do_HEAD()

do_HEAD()方法的源码如下:

def do_HEAD(self):
 """Serve a HEAD request."""
 f = self.send_head()
 if f:
  f.close()

do_HEAD()方法和do_GET()方法的实现类似。

测试例子

SimpleHTTPServer模块还提供了一个测试函数。只需要在命令行中运行如下代码:

python SimpleHTTPServer.py # SimpleHTTPServer.py指代Python标准库中的SimpleHTTPServer模块,注意文件位置。

如果在本地环境中运行以上代码,将会调用请求处理类的translate_path和list_directory方法展示一个文件目录。
然后在浏览器中访问127.0.0.1:8000即可查看SimpleHTTPServer.py文件所在目录下的所有文件。

总结

以上就是本文关于Python探索之实现一个简单的HTTP服务器的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:Python探索之SocketServer详解、Python编程之Re模块下的函数介绍等,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

Python 相关文章推荐
简单介绍Python中的filter和lambda函数的使用
Apr 07 Python
基于python yield机制的异步操作同步化编程模型
Mar 18 Python
Python的Flask框架中使用Flask-Migrate扩展迁移数据库的教程
Jun 14 Python
Python实现多进程共享数据的方法分析
Dec 04 Python
matplotlib给子图添加图例的方法
Aug 03 Python
8段用于数据清洗Python代码(小结)
Oct 31 Python
Python对Excel按列值筛选并拆分表格到多个文件的代码
Nov 05 Python
python 的numpy库中的mean()函数用法介绍
Mar 03 Python
Python操作Excel工作簿的示例代码(\*.xlsx)
Mar 23 Python
使用pycharm和pylint检查python代码规范操作
Jun 09 Python
pytorch加载语音类自定义数据集的方法教程
Nov 10 Python
python自然语言处理之字典树知识总结
Apr 25 Python
Python探索之SocketServer详解
Oct 28 #Python
Bottle框架中的装饰器类和描述符应用详解
Oct 28 #Python
Pandas探索之高性能函数eval和query解析
Oct 28 #Python
Python探索之URL Dispatcher实例详解
Oct 28 #Python
Python探索之Metaclass初步了解
Oct 28 #Python
Python编程之Re模块下的函数介绍
Oct 28 #Python
Python探索之静态方法和类方法的区别详解
Oct 27 #Python
You might like
php中导出数据到excel时数字变为科学计数的解决方法
2013/02/03 PHP
php fsockopen解决办法 php实现多线程
2014/01/20 PHP
thinkphp5.1 文件引入路径问题及注意事项
2018/06/13 PHP
JavaScript的类型转换(字符转数字 数字转字符)
2010/08/30 Javascript
js 限制数字 js限制输入实现代码
2012/12/04 Javascript
JS复制内容到剪切板的实例代码(兼容IE与火狐)
2013/11/19 Javascript
js中window.open()的所有参数详细解析
2014/01/09 Javascript
nodejs中的fiber(纤程)库详解
2015/03/24 NodeJs
jQuery实现图片预加载效果
2015/11/27 Javascript
JavaScript位置与大小(1)之正确理解和运用与尺寸大小相关的DOM属性
2015/12/26 Javascript
JavaScript缓冲运动实现方法(2则示例)
2016/01/08 Javascript
JavaScript必知必会(九)function 说起 闭包问题
2016/06/08 Javascript
JavaScript实现修改伪类样式
2017/11/27 Javascript
用ES6的class模仿Vue写一个双向绑定的示例代码
2018/04/20 Javascript
详解vue的双向绑定原理及实现
2019/05/05 Javascript
vue实现条件叠加搜索的解决方法
2019/05/28 Javascript
微信小程序利用Canvas绘制图片和竖排文字详解
2019/06/25 Javascript
vue中datepicker的使用教程实例代码详解
2019/07/08 Javascript
小程序如何获取多个formId实现详解
2019/09/20 Javascript
Vue事件处理原理及过程详解
2020/03/11 Javascript
JavaScript事件概念详解(区分静态注册和动态注册)
2021/02/05 Javascript
用python删除java文件头上版权信息的方法
2014/07/31 Python
Python使用multiprocessing创建进程的方法
2015/06/04 Python
python 打印出所有的对象/模块的属性(实例代码)
2016/09/11 Python
Python tkinter事件高级用法实例
2018/01/31 Python
pytorch标签转onehot形式实例
2020/01/02 Python
python圣诞树编写实例详解
2020/02/13 Python
中国医药集团国药在线:国药网
2017/02/06 全球购物
英国领先的票务代理商之一:The Ticket Factory
2019/02/09 全球购物
国贸专业大学生职业生涯规划范文
2014/01/10 职场文书
个人能力自我鉴赏
2014/01/25 职场文书
初中毕业典礼演讲稿
2014/09/09 职场文书
2014年司法局工作总结
2014/12/11 职场文书
事业单位财务人员岗位职责
2015/04/14 职场文书
公开致歉信
2019/06/24 职场文书
elasticSearch-api的具体操作步骤讲解
2021/06/28 Java/Android