cinap_lenrekadd hg and python4bb9e2215 years agoHistory
86 lines · 3.4 KB · TeX
RawDownload
\section{\module{SimpleHTTPServer} ---         Simple HTTP request handler} \declaremodule{standard}{SimpleHTTPServer}\sectionauthor{Moshe Zadka}{moshez@zadka.site.co.il}\modulesynopsis{This module provides a basic request handler for HTTP                servers.}  The \module{SimpleHTTPServer} module defines a request-handler class,interface-compatible with \class{BaseHTTPServer.BaseHTTPRequestHandler},that serves files only from a base directory. The \module{SimpleHTTPServer} module defines the following class: \begin{classdesc}{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 baseclass \class{BaseHTTPServer.BaseHTTPRequestHandler}.  This classimplements the \function{do_GET()} and \function{do_HEAD()} functions.\end{classdesc} The \class{SimpleHTTPRequestHandler} defines the following membervariables: \begin{memberdesc}{server_version}This will be \code{"SimpleHTTP/" + __version__}, where \code{__version__}is defined in the module.\end{memberdesc} \begin{memberdesc}{extensions_map}A dictionary mapping suffixes into MIME types. The default is signifiedby an empty string, and is considered to be \code{application/octet-stream}.The mapping is used case-insensitively, and so should contain onlylower-cased keys.\end{memberdesc} The \class{SimpleHTTPRequestHandler} defines the following methods: \begin{methoddesc}{do_HEAD}{}This method serves the \code{'HEAD'} request type: it sends theheaders it would send for the equivalent \code{GET} request. See the\method{do_GET()} method for a more complete explanation of the possibleheaders.\end{methoddesc} \begin{methoddesc}{do_GET}{}The request is mapped to a local file by interpreting the request asa path relative to the current working directory. If the request was mapped to a directory, the directory is checked fora file named \code{index.html} or \code{index.htm} (in that order).If found, the file's contents are returned; otherwise a directorylisting is generated by calling the \method{list_directory()} method.This method uses \function{os.listdir()} to scan the directory, andreturns a \code{404} error response if the \function{listdir()} fails. If the request was mapped to a file, it is opened and the contents arereturned.  Any \exception{IOError} exception in opening the requestedfile is mapped to a \code{404}, \code{'File not found'}error. Otherwise, the content type is guessed by calling the\method{guess_type()} method, which in turn uses the\var{extensions_map} variable. A \code{'Content-type:'} header with the guessed content type isoutput, followed by a \code{'Content-Length:'} header with the file'ssize and a \code{'Last-Modified:'} header with the file's modificationtime. 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 typestarts with \code{text/} the file is opened in text mode; otherwisebinary mode is used. For example usage, see the implementation of the \function{test()}function.\versionadded[The \code{'Last-Modified'} header]{2.5}\end{methoddesc}  \begin{seealso}  \seemodule{BaseHTTPServer}{Base class implementation for Web server                             and request handler.}\end{seealso}