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正则表达式操作指南(re使用)
Sep 06 Python
python基础教程之字典操作详解
Mar 25 Python
python中实现定制类的特殊方法总结
Sep 28 Python
Python中的异常处理简明介绍
Apr 13 Python
Python3.x中自定义比较函数
Apr 24 Python
python re模块findall()函数实例解析
Jan 19 Python
Python实现批量读取图片并存入mongodb数据库的方法示例
Apr 02 Python
python smtplib模块自动收发邮件功能(一)
May 22 Python
Python基于sklearn库的分类算法简单应用示例
Jul 09 Python
pandas.cut具体使用总结
Jun 24 Python
wxPython实现整点报时
Nov 18 Python
Manjaro、pip、conda更换国内源的方法
Nov 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编程网上资源导航
2006/10/09 PHP
php 目录与文件处理-郑阿奇(续)
2011/07/04 PHP
php去除字符串换行符示例分享
2014/02/13 PHP
PHP中使用array函数新建一个数组
2015/11/19 PHP
PHP 类与构造函数解析
2017/02/06 PHP
Laravel中日期时间处理包Carbon的简单使用
2017/09/21 PHP
innerHTML,outerHTML,innerTEXT三者之间的区别
2007/01/28 Javascript
PNGHandler-借助JS让PNG图在IE下实现透明(包括背景图)
2007/08/31 Javascript
图片onload事件触发问题解决方法
2011/07/31 Javascript
用原生JavaScript实现jQuery的$.getJSON的解决方法
2013/05/03 Javascript
AngularJS ng-controller 指令简单实例
2016/08/01 Javascript
js实现简单的选项卡效果
2017/02/23 Javascript
JS库之wow.js使用方法
2017/09/14 Javascript
redux-saga 初识和使用
2018/03/10 Javascript
如何用Node写页面爬虫的工具集
2018/10/26 Javascript
JS浅拷贝和深拷贝原理与实现方法分析
2019/02/28 Javascript
js实现div色块拖动录制
2020/01/16 Javascript
[02:27]刀塔重生降临
2015/10/14 DOTA
python运行时间的几种方法
2016/06/17 Python
Python在图片中添加文字的两种方法
2017/04/29 Python
Python判断文件或文件夹是否存在的三种方法
2017/07/27 Python
Python算法之求n个节点不同二叉树个数
2017/10/27 Python
python 读写中文json的实例详解
2017/10/29 Python
基于Python开发chrome插件的方法分析
2018/07/07 Python
python 实现人和电脑猜拳的示例代码
2020/03/02 Python
django xadmin中form_layout添加字段显示方式
2020/03/30 Python
python中matplotlib实现随鼠标滑动自动标注代码
2020/04/23 Python
Python数据可视化实现漏斗图过程图解
2020/07/20 Python
Python 程序员必须掌握的日志记录
2020/08/17 Python
Python爬虫入门教程01之爬取豆瓣Top电影
2021/01/24 Python
HTML5中的nav标签学习笔记
2016/06/24 HTML / CSS
HTML5 新表单类型示例代码
2018/03/20 HTML / CSS
材料成型专业个人求职信范文
2013/09/25 职场文书
竞选大队干部演讲稿
2014/09/11 职场文书
2014年银行客户经理工作总结
2014/11/12 职场文书
2016学校元旦晚会经典开场白台词
2015/12/03 职场文书