Python探索之实现一个简单的HTTP服务器

作者:mengwei 时间:2021-06-04 16:52:02 

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文件所在目录下的所有文件。

来源:http://python.jobbole.com/88632/

标签:python,http服务器
0
投稿

猜你喜欢

  • Python视频编辑库MoviePy的使用

    2022-12-22 21:07:07
  • 获取python文件扩展名和文件名方法

    2023-06-24 16:51:24
  • Pandas如何将Timestamp转为datetime类型

    2021-07-28 04:24:52
  • python基于tkinter制作下班倒计时工具

    2022-09-17 00:43:36
  • laravel学习教程之存取器

    2023-06-07 20:01:12
  • Python Flask实现图片验证码与邮箱验证码流程详细讲解

    2021-10-19 06:35:29
  • 在Python中使用defaultdict初始化字典以及应用方法

    2021-01-05 02:03:02
  • python判断文件夹内是否存在指定后缀文件的实例

    2021-12-27 23:05:19
  • Python时间序列缺失值的处理方法(日期缺失填充)

    2023-04-13 07:39:18
  • Python基础之python循环控制语句break/continue详解

    2022-01-24 05:54:01
  • request基本使用及各种请求方式参数的示例

    2021-03-31 02:32:52
  • Zabbix实现微信报警功能

    2021-10-17 04:40:05
  • 有关JS中Event对象的几点总结

    2009-03-06 12:36:00
  • python对XML文件的操作实现代码

    2023-05-03 22:27:26
  • 探究Python中isalnum()方法的使用

    2021-12-05 19:05:31
  • Python排序搜索基本算法之插入排序实例分析

    2023-12-28 14:20:25
  • uwsgi+nginx部署Django项目操作示例

    2021-05-04 02:23:50
  • 无序列表 li ul

    2008-07-29 13:00:00
  • python实现俄罗斯方块小游戏

    2023-02-17 15:11:12
  • YOLOv5部署到web端详细过程(flask+js简单易懂)

    2023-03-28 07:00:17
  • asp之家 网络编程 m.aspxhome.com