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算法学习之桶排序算法实例(分块排序)
Dec 18 Python
编写Python脚本来实现最简单的FTP下载的教程
May 04 Python
Python获取linux主机ip的简单实现方法
Apr 18 Python
python3+mysql查询数据并通过邮件群发excel附件
Feb 24 Python
selenium+python设置爬虫代理IP的方法
Nov 29 Python
Python eval的常见错误封装及利用原理详解
Mar 26 Python
Django Python 获取请求头信息Content-Range的方法
Aug 06 Python
python利用itertools生成密码字典并多线程撞库破解rar密码
Aug 12 Python
Python Collatz序列实现过程解析
Oct 12 Python
pytorch中tensor张量数据类型的转化方式
Dec 31 Python
Keras自动下载的数据集/模型存放位置介绍
Jun 19 Python
python切割图片的示例
Nov 12 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 sprintf()函数让你的sql操作更安全
2008/07/23 PHP
使用php判断浏览器的类型和语言的函数代码
2013/02/28 PHP
php 判断是否是中文/英文/数字示例代码
2013/09/30 PHP
PHP lcfirst()函数定义与用法
2019/03/08 PHP
Extjs中ComboBoxTree实现的下拉框树效果(自写)
2013/05/28 Javascript
JS下拉框内容左右移动效果的具体实现
2013/07/10 Javascript
3分钟写出来的Jquery版checkbox全选反选功能
2013/10/23 Javascript
NodeJS学习笔记之(Url,QueryString,Path)模块
2015/01/13 NodeJs
JavaScript常用的弹出广告及背投广告实现方法
2015/02/06 Javascript
JavaScript中的函数嵌套使用
2015/06/04 Javascript
极易被忽视的javascript面试题七问七答
2016/02/15 Javascript
JS实现图片局部放大或缩小的方法
2016/08/20 Javascript
React如何避免重渲染
2018/04/10 Javascript
vue-baidu-map 进入页面自动定位的解决方案(推荐)
2018/04/28 Javascript
Node.js API详解之 repl模块用法实例分析
2020/05/25 Javascript
vue中解决微信html5原生ios虚拟键返回不刷新问题
2020/10/20 Javascript
[01:12:40]DOTA2-DPC中国联赛 正赛 DLG vs XG BO3 第三场 1月25日
2021/03/11 DOTA
Python简单实现安全开关文件的两种方式
2016/09/19 Python
Python迭代器定义与简单用法分析
2018/04/30 Python
Python对切片命名的实现方法
2018/10/16 Python
简单了解python协程的相关知识
2019/08/31 Python
Django 实现Admin自动填充当前用户的示例代码
2019/11/18 Python
Python如何实现自带HTTP文件传输服务
2020/07/08 Python
Python如何定义有可选参数的元类
2020/07/31 Python
详解python polyscope库的安装和例程
2020/11/13 Python
项目管理计划书
2014/01/09 职场文书
生产厂长岗位职责
2014/02/21 职场文书
给校长的建议书500字
2014/05/15 职场文书
社区戒毒工作方案
2014/06/04 职场文书
工会趣味活动方案
2014/08/18 职场文书
关于感恩的演讲稿200字
2014/08/26 职场文书
租房协议书
2014/09/12 职场文书
乡镇遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
班主任先进事迹材料
2014/12/17 职场文书
公司2015年终工作总结
2015/05/26 职场文书
国情备忘录观后感
2015/06/04 职场文书