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统计一个文本中重复行数的方法
Nov 19 Python
Python使用Pycrypto库进行RSA加密的方法详解
Jun 06 Python
python中的lambda表达式用法详解
Jun 22 Python
Python实现Smtplib发送带有各种附件的邮件实例
Jun 05 Python
python下解压缩zip文件并删除文件的实例
Apr 24 Python
Django 忘记管理员或忘记管理员密码 重设登录密码的方法
May 30 Python
初探利用Python进行图文识别(OCR)
Feb 26 Python
python中如何实现将数据分成训练集与测试集的方法
Sep 13 Python
python读取ini配置的类封装代码实例
Jan 08 Python
pycharm的python_stubs问题
Apr 08 Python
python正则表达式的懒惰匹配和贪婪匹配说明
Jul 13 Python
python/golang 删除链表中的元素
Sep 14 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
现磨咖啡骗局!现磨咖啡=新鲜咖啡?现磨咖啡背后的猫腻你不懂!
2019/03/28 冲泡冲煮
PHP加密技术的简单实现
2016/09/04 PHP
彻底搞懂PHP 变量结构体
2017/10/11 PHP
PHP PDOStatement::closeCursor讲解
2019/01/30 PHP
爆炸式的JS圆形浮动菜单特效代码
2010/03/03 Javascript
location.search在客户端获取Url参数的方法
2010/06/08 Javascript
使用JavaScript为Kindeditor自定义按钮增加Audio标签
2016/03/18 Javascript
微信QQ的二维码登录原理js代码解析
2016/06/23 Javascript
Bootstrap栅格系统学习笔记
2016/11/25 Javascript
vuejs绑定class和style样式
2017/04/11 Javascript
JavaScript实现瀑布流图片效果
2017/06/30 Javascript
nodejs 图片预览和上传的示例代码
2017/09/30 NodeJs
详解vuex中mapState,mapGetters,mapMutations,mapActions的作用
2018/04/13 Javascript
vue cli3适配所有端方案的实现
2020/04/13 Javascript
vue实现动态表格提交参数动态生成控件的操作
2020/11/09 Javascript
Python数组遍历的简单实现方法小结
2016/04/27 Python
python将ansible配置转为json格式实例代码
2017/05/15 Python
centos 安装python3.6环境并配置虚拟环境的详细教程
2018/02/22 Python
python kmeans聚类简单介绍和实现代码
2018/02/23 Python
对numpy中的where方法嵌套使用详解
2018/10/31 Python
Python实现查找最小的k个数示例【两种解法】
2019/01/08 Python
对python中arange()和linspace()的区别说明
2020/05/03 Python
加拿大快时尚零售商:Ardene
2018/02/14 全球购物
英国银首饰公司:e&e Jewellery
2021/02/11 全球购物
介绍一下你对SOA的认识
2016/04/24 面试题
电子银行营销方案
2014/02/22 职场文书
教师批评与自我批评
2014/10/15 职场文书
违反单位工作制度检讨书
2014/10/25 职场文书
2014五年级班主任工作总结
2014/12/05 职场文书
2015年工商所工作总结
2015/05/21 职场文书
会议主持词通用版
2019/04/02 职场文书
php微信小程序解包过程实例详解
2021/03/31 PHP
jquery插件实现图片悬浮
2021/04/16 jQuery
python numpy中multiply与*及matul 的区别说明
2021/05/26 Python
压缩Redis里的字符串大对象操作
2021/06/23 Redis
SpringBoot项目多数据源及mybatis 驼峰失效的问题解决方法
2022/07/07 Java/Android