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 相关文章推荐
sqlalchemy对象转dict的示例
Apr 22 Python
在Python中使用成员运算符的示例
May 13 Python
django实现登录时候输入密码错误5次锁定用户十分钟
Nov 05 Python
Python数据结构之哈夫曼树定义与使用方法示例
Apr 22 Python
在python中,使用scatter绘制散点图的实例
Jul 03 Python
Python3 实现减少可调用对象的参数个数
Dec 20 Python
使用Tensorboard工具查看Loss损失率
Feb 15 Python
Python字符串函数strip()原理及用法详解
Jul 23 Python
Python调用C/C++的方法解析
Aug 05 Python
Python开发入门——迭代的基本使用
Sep 03 Python
Python+Matplotlib+LaTeX玩转数学公式
Feb 24 Python
PyCharm 配置SSH和SFTP连接远程服务器
May 11 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&&mysql)三
2006/10/09 PHP
PHP防注入安全代码
2008/04/09 PHP
PHP大批量插入数据库的3种方法和速度对比
2014/07/08 PHP
ThinkPHP简单使用memcache缓存的方法
2016/11/15 PHP
php分享朋友圈的实现代码
2019/02/18 PHP
用php定义一个数组最简单的方法
2019/10/04 PHP
MultiSelect左右选择控件的设计与实现介绍
2013/06/08 Javascript
抛弃Nginx使用nodejs做反向代理服务器
2014/07/17 NodeJs
对Js OOP编程 创建对象的一些全面理解
2016/07/26 Javascript
vue开发心得和技巧分享
2016/10/27 Javascript
JS实现的随机排序功能算法示例
2017/06/09 Javascript
Vue.js常用指令的使用小结
2017/06/23 Javascript
ReactNative页面跳转Navigator实现的示例代码
2017/08/02 Javascript
Vue利用History记录上一页面的数据方法实例
2018/11/02 Javascript
vue中v-show和v-if的异同及v-show用法
2019/06/06 Javascript
JavaScript this使用方法图解
2020/02/04 Javascript
vue自动添加浏览器兼容前后缀操作
2020/08/13 Javascript
vue 手机物理监听键+退出提示代码
2020/09/09 Javascript
elementui实现预览图片组件二次封装
2020/12/29 Javascript
Python深入学习之特殊方法与多范式
2014/08/31 Python
python随机取list中的元素方法
2018/04/08 Python
Tensorflow 实现修改张量特定元素的值方法
2018/07/30 Python
Python 中包/模块的 `import` 操作代码
2019/04/22 Python
python实现爬取百度图片的方法示例
2019/07/06 Python
python中resample函数实现重采样和降采样代码
2020/02/25 Python
Python sublime安装及配置过程详解
2020/06/29 Python
python为什么要安装到c盘
2020/07/20 Python
英国山地公路自行车商店:Tweeks Cycles
2018/03/16 全球购物
Homestay中文官网:全球寄宿家庭
2018/10/18 全球购物
美国购买体育赛事门票网站:TicketCity
2019/03/06 全球购物
双立人美国官方商店:ZWILLING集团餐具和炊具
2020/05/07 全球购物
学年自我鉴定
2014/01/16 职场文书
2014乡镇党委副书记对照检查材料思想汇报
2014/10/09 职场文书
2016新春团拜会致辞
2015/08/01 职场文书
学习十八大的感悟
2015/08/11 职场文书
Mybatis 一级缓存和二级缓存原理区别
2022/09/23 Java/Android