SimpleHTTPServer
SimpleHTTPServer — Simple HTTP request handler
注意
该SimpleHTTPServer
模块已被合并到Python 3中。当将源代码转换为Python 3时http.server
,2to3工具将自动适应导入。
该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.html
or 的文件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