diff options
Diffstat (limited to 'Doc/library/simplehttpserver.rst')
-rw-r--r-- | Doc/library/simplehttpserver.rst | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/Doc/library/simplehttpserver.rst b/Doc/library/simplehttpserver.rst new file mode 100644 index 0000000..766253e --- /dev/null +++ b/Doc/library/simplehttpserver.rst @@ -0,0 +1,86 @@ + +:mod:`SimpleHTTPServer` --- Simple HTTP request handler +======================================================= + +.. module:: SimpleHTTPServer + :synopsis: This module provides a basic request handler for HTTP servers. +.. sectionauthor:: Moshe Zadka <moshez@zadka.site.co.il> + + +The :mod:`SimpleHTTPServer` module defines a request-handler class, +interface-compatible with :class:`BaseHTTPServer.BaseHTTPRequestHandler`, that +serves files only from a base directory. + +The :mod:`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 + :class:`BaseHTTPServer.BaseHTTPRequestHandler`. This class implements the + :func:`do_GET` and :func:`do_HEAD` functions. + +The :class:`SimpleHTTPRequestHandler` defines the following member variables: + + +.. attribute:: SimpleHTTPRequestHandler.server_version + + This will be ``"SimpleHTTP/" + __version__``, where ``__version__`` is defined + in the module. + + +.. attribute:: SimpleHTTPRequestHandler.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 :class:`SimpleHTTPRequestHandler` defines the following methods: + + +.. method:: SimpleHTTPRequestHandler.do_HEAD() + + This method serves the ``'HEAD'`` request type: it sends the headers it would + send for the equivalent ``GET`` request. See the :meth:`do_GET` method for a + more complete explanation of the possible headers. + + +.. method:: SimpleHTTPRequestHandler.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 + :meth:`list_directory` method. This method uses :func:`os.listdir` to scan the + directory, and returns a ``404`` error response if the :func:`listdir` fails. + + If the request was mapped to a file, it is opened and the contents are returned. + Any :exc:`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 :meth:`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 ``'Content-Length:'`` header with the file's size and a + ``'Last-Modified:'`` header with the file's modification time. + + Then follows 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 :func:`test` function. + + .. versionadded:: 2.5 + The ``'Last-Modified'`` header. + + +.. seealso:: + + Module :mod:`BaseHTTPServer` + Base class implementation for Web server and request handler. + |