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设置windows桌面壁纸的实现代码
Jan 28 Python
python任务调度实例分析
May 19 Python
利用Python如何将数据写到CSV文件中
Jun 05 Python
Python数据分析:手把手教你用Pandas生成可视化图表的教程
Dec 15 Python
用Anaconda安装本地python包的方法及路径问题(图文)
Jul 16 Python
基于python 微信小程序之获取已存在模板消息列表
Aug 05 Python
python加载自定义词典实例
Dec 06 Python
python 解决print数组/矩阵无法完整输出的问题
Feb 19 Python
Python实现常见的几种加密算法(MD5,SHA-1,HMAC,DES/AES,RSA和ECC)
May 09 Python
Keras Convolution1D与Convolution2D区别说明
May 22 Python
Selenium webdriver添加cookie实现过程详解
Aug 12 Python
Python与C++中梯度方向直方图的实现
Mar 17 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实现上传图片文件代码
2015/07/19 PHP
PHP安装threads多线程扩展基础教程
2015/11/17 PHP
Yii视图CGridView实现操作按钮定义地址示例
2016/07/14 PHP
PHP读取Excel类文件
2017/05/15 PHP
用js实现的一个Flash滚动轮换显示图片代码生成器
2007/03/14 Javascript
用javascript实现的激活输入框后隐藏初始内容
2007/06/29 Javascript
window.open被浏览器拦截后的自定义提示效果代码
2007/11/19 Javascript
tangram框架响应式加载图片方法
2013/11/21 Javascript
javascript实现动态侧边栏代码
2014/02/19 Javascript
$(document).ready(function() {})不执行初始化脚本
2014/06/19 Javascript
五种js判断是否为整数类型方式
2015/12/03 Javascript
简单总结JavaScript中的String字符串类型
2016/05/26 Javascript
JavaScript优化以及前段开发小技巧
2017/02/02 Javascript
纯js实现html转pdf的简单实例(推荐)
2017/02/16 Javascript
原生实现一个react-redux的代码示例
2018/06/08 Javascript
微信小程序环境下将文件上传到OSS的方法步骤
2019/05/31 Javascript
深入理解令牌认证机制(token)
2019/08/22 Javascript
vue实现路由监听和参数监听
2019/10/29 Javascript
利用PHP实现递归删除链表元素的方法示例
2020/10/23 Javascript
javascript实现移动端轮播图
2020/12/09 Javascript
Python使用lxml模块和Requests模块抓取HTML页面的教程
2016/05/16 Python
python tkinter图形界面代码统计工具
2019/09/18 Python
python实现广度优先搜索过程解析
2019/10/19 Python
记录模型训练时loss值的变化情况
2020/06/16 Python
CSS实现圆形放大镜狙击镜效果 只有圆圈里的放大
2012/12/10 HTML / CSS
HTML5拖拽功能实现的拼图游戏
2018/07/31 HTML / CSS
建筑专业自我鉴定
2013/10/22 职场文书
生产班组长岗位职责
2014/01/05 职场文书
最新会计专业求职信范文
2014/01/28 职场文书
资金主管岗位职责范本
2014/03/04 职场文书
师范生自我鉴定
2014/03/20 职场文书
大学学风建设方案
2014/05/04 职场文书
高中同学会活动方案
2014/08/14 职场文书
试用期转正后的自我评价
2014/09/21 职场文书
党的群众路线教育实践活动查摆剖析材料
2014/10/10 职场文书
诉讼和解协议书
2016/03/23 职场文书