SimpleHTTPServer ——一个简单的HTTP服务器

2019阿里云双11返场狂欢继续,
地址https://www.aliyun.com/1111/2019/home

推荐:使用Netty实现的一个简单HTTP服务器

[使用Netty实现的一个简单HTTP服务器]

Python标准库中的BaseHTTPServer模块实现了一个基础的HTTP服务器基类和HTTP请求处理类。这在文章中进行了相关的介绍。然而,BaseHTTPServer模块中并没有定义相关的请求方法,诸如GETHEADPOST等。在BaseHTTPServer模块的基础上,Python标准库中的SimpleHTTPServer模块实现了简单的GETHEAD请求。

在该模块中,它沿用了BaseHTTPServer模块中实现的HTTPServer服务器,这里就不再赘述。而请求处理类则是继承了BaseHTTPServer模块中的BaseHTTPRequestHandler类。SimpleHTTPServer模块实现了具有GETHEAD请求方法的HTTP通信服务。根据文章中的介绍,只需要在请求处理类中定义do_GET()do_HEAD()方法即可。

do_GET()

do_GET()方法的源码如下:

Python
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()方法等设置响应报文等。

推荐:丢掉python -m SimpleHTTPServer,一行命令用http分享目录(单行web服务器)

[好久没更新博客,还是要备忘一些实用工作技巧:]

do_HEAD()

do_HEAD()方法的源码如下:

Python
def do_HEAD(self):
    """Serve a HEAD request."""
    f = self.send_head()
    if f:
        f.close()

do_HEAD()方法和do_GET()方法的实现类似。

测试例子

SimpleHTTPServer模块还提供了一个测试函数。只需要在命令行中运行如下代码:

Python
python SimpleHTTPServer.py  # SimpleHTTPServer.py指代Python标准库中的SimpleHTTPServer模块,注意文件位置。

如果在本地环境中运行以上代码,将会调用请求处理类的translate_pathlist_directory方法展示一个文件目录。

然后在浏览器中访问127.0.0.1:8000即可查看SimpleHTTPServer.py文件所在目录下的所有文件。

推荐:记录一下:使用 python -m SimpleHTTPServer 快速搭建http服务

[在 Linux 服务器上或安装了 Python 的机器上,可以使用 nohup python -m SimpleHTTPServer [port] & 快速搭建一个http服务。]

相关推荐