SimpleHTTPServer

注意

SimpleHTTPServer模块已被合并到Python 3中。当将源代码转换为Python 3时http.server2to3工具将自动适应导入。

SimpleHTTPServer模块定义了一个类,SimpleHTTPRequestHandler它与接口兼容BaseHTTPServer.BaseHTTPRequestHandler

SimpleHTTPServer模块定义了以下类:

class SimpleHTTPServer.SimpleHTTPRequestHandler(request, client_address, server)

该类提供当前目录和下面的文件,直接将目录结构映射到HTTP请求。

很多工作,例如解析请求,都是由基类完成的BaseHTTPServer.BaseHTTPRequestHandler。这个类实现do_GET()do_HEAD()功能。

以下定义为以下类级别的属性SimpleHTTPRequestHandler

server_version

这将是"SimpleHTTP/" + __version__,其中__version__在模块级被定义。

extensions_map

字典映射后缀为MIME类型。缺省值由空字符串表示,并被认为是application/octet-stream。该映射不区分大小写使用,因此只应包含小写的键。

SimpleHTTPRequestHandler类定义了下列方法:

do_HEAD()

这个方法服务于'HEAD'请求类型:它发送它将发送的等价GET请求头。有关do_GET()可能的标题的更完整说明,请参阅该方法。

do_GET()

通过将请求解释为相对于当前工作目录的路径,该请求被映射到本地文件。

如果请求被映射到目录,则检查目录中名为index.htmlor 的文件index.htm(按该顺序)。如果找到,则返回文件的内容; 否则通过调用该list_directory()方法生成目录列表。此方法用于os.listdir()扫描目录,404如果listdir()失败则返回错误响应。

如果请求被映射到一个文件,它将被打开并返回内容。任何IOError在打开的pool异常映射到一个404'File not found'错误。否则,通过调用guess_type()方法来猜测内容类型,该方法依次使用extensions_map变量。

'Content-type:'输出一个包含猜测内容类型的'Content-Length:'标题,后跟一个包含文件大小的'Last-Modified:'标题和一个包含文件修改时间的标题。

然后跟着一个空白行表示标题的结尾,然后输出文件的内容。如果文件的MIME类型text/以文本模式打开文件开头; 否则使用二进制模式。

模块中的test()功能SimpleHTTPServer是一个使用SimpleHTTPRequestHandler处理程序创建服务器的示例。

版本2.5中的新功能:'Last-Modified'标题。

SimpleHTTPServer可以通过以下方式使用该模块,以便设置一个非常基本的Web服务器来提供与当前目录相关的文件。

import SimpleHTTPServer
import SocketServer

PORT = 8000

Handler = SimpleHTTPServer.SimpleHTTPRequestHandler

httpd = SocketServer.TCPServer(("", PORT), Handler)

print "serving at port", PORT
httpd.serve_forever()

SimpleHTTPServer模块也可以使用-m带有port number参数的解释器开关直接调用。与前面的例子类似,这为相对于当前目录的文件提供服务。

python -m SimpleHTTPServer 8000

扫码关注云+社区

领取腾讯云代金券