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从入门到精通(DAY 1)
Dec 20 Python
使用Python的Django框架结合jQuery实现AJAX购物车页面
Apr 11 Python
Python基于matplotlib实现绘制三维图形功能示例
Jan 18 Python
Python DataFrame设置/更改列表字段/元素类型的方法
Jun 09 Python
Python图片转换成矩阵,矩阵数据转换成图片的实例
Jul 02 Python
Python基于Tkinter模块实现的弹球小游戏
Dec 27 Python
使用python写的opencv实时监测和解析二维码和条形码
Aug 14 Python
Python抓新型冠状病毒肺炎疫情数据并绘制全国疫情分布的代码实例
Feb 05 Python
pyCharm 设置调试输出窗口中文显示方式(字符码转换)
Jun 09 Python
keras K.function获取某层的输出操作
Jun 29 Python
Keras 在fit_generator训练方式中加入图像random_crop操作
Jul 03 Python
python 实现"神经衰弱"翻牌游戏
Nov 09 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操作JSON格式数据的实现代码
2011/12/24 PHP
PHP+MySQL投票系统的设计和实现分享
2012/09/23 PHP
ThinkPHP行为扩展Behavior应用实例详解
2014/07/22 PHP
用JQuery 实现的自定义对话框
2007/03/24 Javascript
JS option location 页面跳转实现代码
2008/12/27 Javascript
通过javascript设置css属性的代码
2009/12/28 Javascript
远离JS灾难css灾难之 js私有函数和css选择器作为容器
2011/12/11 Javascript
javascript模拟post提交隐藏地址栏的参数
2014/09/03 Javascript
基于jquery的手风琴图片展示效果实现方法
2014/12/16 Javascript
jQuery实现伪分页的方法分享
2016/02/17 Javascript
Vue.JS入门教程之自定义指令
2016/12/08 Javascript
详解node-ccap模块生成captcha验证码
2017/07/01 Javascript
jQuery事件_动力节点Java学院整理
2017/07/05 jQuery
Vue组件之全局组件与局部组件的使用详解
2017/10/09 Javascript
小程序测试后台服务的方法(ngrok)
2019/03/08 Javascript
浅谈发布订阅模式与观察者模式
2019/04/09 Javascript
Vue解决移动端弹窗滚动穿透问题
2020/12/15 Vue.js
[02:19]DOTA2上海特级锦标赛 观赛指南 Spectator Guide
2016/02/04 DOTA
Python自定义函数的创建、调用和函数的参数详解
2014/03/11 Python
Python复制文件操作实例详解
2015/11/10 Python
python字符串str和字节数组相互转化方法
2017/03/18 Python
python 删除列表里所有空格项的方法总结
2018/04/18 Python
python操作xlsx文件的包openpyxl实例
2018/05/03 Python
异步任务队列Celery在Django中的使用方法
2018/06/07 Python
Python中实现单例模式的n种方式和原理
2018/11/14 Python
Python 生成器,迭代,yield关键字,send()传参给yield语句操作示例
2019/10/12 Python
python生成器用法实例详解
2019/11/22 Python
python:解析requests返回的response(json格式)说明
2020/04/30 Python
django自带的权限管理Permission用法说明
2020/05/13 Python
Python实现爬取网页中动态加载的数据
2020/08/17 Python
丝芙兰中国官方商城:SEPHORA中国
2018/01/10 全球购物
以设计师精品品质提供快速时尚:Mostata
2019/05/10 全球购物
预备党员思想汇报范文
2013/12/29 职场文书
证婚人经典证婚词
2014/01/09 职场文书
2014年世界艾滋病日宣传活动总结
2014/11/18 职场文书
求职自我评价参考范文
2019/05/16 职场文书