11.18 SimpleHTTPServer -- Simple HTTP request handler

The SimpleHTTPServer module defines a request-handler class, interface-compatible with BaseHTTPServer.BaseHTTPRequestHandler, that serves files only from a base directory.

The SimpleHTTPServer module defines the following class:

class SimpleHTTPRequestHandler( request, client_address, server)
This class is used to serve files from the current directory and below, directly mapping the directory structure to HTTP requests.

A lot of the work, such as parsing the request, is done by the base class BaseHTTPServer.BaseHTTPRequestHandler. This class implements the do_GET() and do_HEAD() functions.

The SimpleHTTPRequestHandler defines the following member variables:

server_version
This will be "SimpleHTTP/" + __version__, where __version__ is defined in the module.

extensions_map
A dictionary mapping suffixes into MIME types. The default is signified by an empty string, and is considered to be application/octet-stream. The mapping is used case-insensitively, and so should contain only lower-cased keys.

The SimpleHTTPRequestHandler defines the following methods:

do_HEAD( )
This method serves the 'HEAD' request type: it sends the headers it would send for the equivalent GET request. See the do_GET() method for a more complete explanation of the possible headers.

do_GET( )
The request is mapped to a local file by interpreting the request as a path relative to the current working directory.

If the request was mapped to a directory, the directory is checked for a file named index.html or index.htm (in that order). If found, the file's contents are returned; otherwise a directory listing is generated by calling the list_directory() method. This method uses os.listdir() to scan the directory, and returns a 404 error response if the listdir() fails.

If the request was mapped to a file, it is opened and the contents are returned. Any IOError exception in opening the requested file is mapped to a 404, 'File not found' error. Otherwise, the content type is guessed by calling the guess_type() method, which in turn uses the extensions_map variable.

A 'Content-type:' header with the guessed content type is output, followed by a blank line signifying the end of the headers, and then the contents of the file are output. If the file's MIME type starts with text/ the file is opened in text mode; otherwise binary mode is used.

For example usage, see the implementation of the test() function.

See Also:

Module BaseHTTPServer:
Base class implementation for Web server and request handler.
See About this document... for information on suggesting changes.
Document provided by Web Master Resources and hosted at Speedy Domain Registration Company