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函数map()和partial()的知识点总结

    2023-10-04 14:58:11
  • python 执行shell命令并将结果保存的实例

    2023-07-27 20:34:52
  • Python实现智慧校园自动评教全新版

    2023-02-17 05:04:41
  • Vue 中使用 CSS Modules优雅方法

    2024-04-30 10:23:39
  • pandas如何将表中的字符串转成数值型

    2021-10-10 08:03:33
  • 20年来我得到的20条编程经验

    2010-05-26 13:44:00
  • javascript 改变字体大小方法集合

    2023-07-06 16:58:02
  • php cli换行示例

    2024-05-03 15:50:59
  • python 自动化偷懒的四个实用操作

    2023-11-19 08:49:48
  • py3nvml实现GPU相关信息读取的案例分析

    2022-01-11 11:00:52
  • Python的Flask框架应用调用Redis队列数据的方法

    2023-04-20 14:14:38
  • Python的一些用法分享

    2021-04-19 20:49:22
  • MySql之授权用户权限如何设置

    2024-01-21 21:56:13
  • Python类装饰器实现方法详解

    2021-11-15 20:01:05
  • MySQL多表查询的具体实例

    2024-01-22 00:13:20
  • Java连接Oracle数据库实例解析

    2024-01-17 06:31:04
  • 在python中logger setlevel没有生效的解决

    2021-12-13 16:03:01
  • 详解vue-router 2.0 常用基础知识点之router.push()

    2024-04-09 10:49:35
  • Python3 xml.etree.ElementTree支持的XPath语法详解

    2021-08-06 07:29:44
  • python实现半自动化发送微信信息

    2023-07-16 09:15:38
  • asp之家 网络编程 m.aspxhome.com