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中处理unchecked未捕获异常实例
Jan 17 Python
Python字符串拼接、截取及替换方法总结分析
Apr 13 Python
详解使用 pyenv 管理多个版本 python 环境
Oct 19 Python
对Python 简单串口收发GUI界面的实例详解
Jun 12 Python
python3中利用filter函数输出小于某个数的所有回文数实例
Nov 24 Python
Python时间差中seconds和total_seconds的区别详解
Dec 26 Python
Python实现链表反转的方法分析【迭代法与递归法】
Feb 22 Python
pyecharts调整图例与各板块的位置间距实例
May 16 Python
python 解决mysql where in 对列表(list,,array)问题
Jun 06 Python
Python pytesseract验证码识别库用法解析
Jun 29 Python
如何在Win10系统使用Python3连接Hive
Oct 15 Python
Python爬虫教程之利用正则表达式匹配网页内容
Dec 08 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实现商品成交时发送短信功能
2016/05/11 PHP
Laravel5.* 打印出执行的sql语句的方法
2017/07/24 PHP
PHP7扩展开发教程之Hello World实现方法示例
2017/08/03 PHP
JSON扫盲帖 JSON.as类教程
2009/02/16 Javascript
onsubmit阻止form表单提交与onclick的相关操作
2010/09/03 Javascript
javascript 获取iframe里页面中元素值的方法
2014/02/17 Javascript
JavaScript 学习笔记之语句
2015/01/14 Javascript
javascript实现随机读取数组的方法
2015/08/03 Javascript
jquery实现的回旋滚动效果完整实例【附demo源码下载】
2016/09/20 Javascript
详解nodeJS中读写文件方法的区别
2017/03/06 NodeJs
获取url中用&隔开的参数实例(分享)
2017/05/28 Javascript
Bootstrap table使用方法汇总
2017/11/17 Javascript
vue项目中公用footer组件底部位置的适配问题
2018/05/10 Javascript
详解nginx配置vue h5 history去除#号
2020/11/09 Javascript
[01:01:24]DOTA2上海特级锦标赛A组败者赛 EHOME VS CDEC第三局
2016/02/25 DOTA
[52:22]EG vs VG Supermajor小组赛B组 BO3 第一场 6.2
2018/06/03 DOTA
Python通过websocket与js客户端通信示例分析
2014/06/25 Python
对Python中的@classmethod用法详解
2018/04/21 Python
python实现windows倒计时锁屏功能
2019/07/30 Python
python绘制雷达图实例讲解
2021/01/03 Python
python 制作网站小说下载器
2021/02/20 Python
css3弹性盒子flex实现三栏布局的实现
2020/11/12 HTML / CSS
基于HTML5+Webkit实现树叶飘落动画
2017/12/28 HTML / CSS
详解Canvas实用库Fabric.js使用手册
2019/01/07 HTML / CSS
Myprotein瑞典官方网站:畅销欧洲英国运动营养品牌
2018/01/22 全球购物
澳大利亚Mocha官方网站:包、钱包、珠宝和配饰
2019/07/18 全球购物
销售行业个人求职自荐信
2013/09/25 职场文书
接受捐赠答谢词
2014/01/27 职场文书
化妆品促销方案
2014/02/24 职场文书
重点工程汇报材料
2014/08/27 职场文书
教师党员自我剖析材料
2014/09/29 职场文书
初中生旷课检讨书范文
2014/10/06 职场文书
2015年党员公开承诺事项
2015/04/27 职场文书
仙境之桥观后感
2015/06/16 职场文书
初中语文教学随笔
2015/08/15 职场文书
tensorflow中的梯度求解及梯度裁剪操作
2021/05/26 Python