开源 企业版 高校版 私有云 模力方舟 AI 队友
代码拉取完成,页面将自动刷新
加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
已有帐号? 立即登录
文件
master
分支 (1)
master
master
分支 (1)
master
克隆/下载
克隆/下载
提示
下载代码请复制以下命令到终端执行
为确保你提交的代码身份被 Gitee 正确识别,请执行以下命令完成配置
初次使用 SSH 协议进行代码克隆、推送等操作时,需按下述提示完成 SSH 配置
1 生成 RSA 密钥
2 获取 RSA 公钥内容,并配置到 SSH公钥
在 Gitee 上使用 SVN,请访问 使用指南
使用 HTTPS 协议时,命令行会出现如下账号密码验证步骤。基于安全考虑,Gitee 建议 配置并使用私人令牌 替代登录密码进行克隆、推送等操作
Username for 'https://gitee.com': userName
Password for 'https://userName@gitee.com': # 私人令牌
master
分支 (1)
master
python
/
Doc
/
library
/
basehttpserver.rst
python
/
Doc
/
library
/
basehttpserver.rst
basehttpserver.rst 9.25 KB
一键复制 编辑 原始数据 按行查看 历史
feng 提交于 2015年10月01日 10:15 +08:00 . python

:mod:`BaseHTTPServer` --- Basic HTTP server

.. module:: BaseHTTPServer
 :synopsis: Basic HTTP server (base class for SimpleHTTPServer and CGIHTTPServer).

Note

The :mod:`BaseHTTPServer` module has been merged into :mod:`http.server` in Python 3.0. The :term:`2to3` tool will automatically adapt imports when converting your sources to 3.0.

.. index::
 pair: WWW; server
 pair: HTTP; protocol
 single: URL
 single: httpd

.. index::
 module: SimpleHTTPServer
 module: CGIHTTPServer

This module defines two classes for implementing HTTP servers (Web servers). Usually, this module isn't used directly, but is used as a basis for building functioning Web servers. See the :mod:`SimpleHTTPServer` and :mod:`CGIHTTPServer` modules.

The first class, :class:`HTTPServer`, is a :class:`SocketServer.TCPServer` subclass. It creates and listens at the HTTP socket, dispatching the requests to a handler. Code to create and run the server looks like this:

def run(server_class=BaseHTTPServer.HTTPServer,
 handler_class=BaseHTTPServer.BaseHTTPRequestHandler):
 server_address = ('', 8000)
 httpd = server_class(server_address, handler_class)
 httpd.serve_forever()

This class builds on the :class:`TCPServer` class by storing the server address as instance variables named :attr:`server_name` and :attr:`server_port`. The server is accessible by the handler, typically through the handler's :attr:`server` instance variable.

This class is used to handle the HTTP requests that arrive at the server. By itself, it cannot respond to any actual HTTP requests; it must be subclassed to handle each request method (e.g. GET or POST). :class:`BaseHTTPRequestHandler` provides a number of class and instance variables, and methods for use by subclasses.

The handler will parse the request and the headers, then call a method specific to the request type. The method name is constructed from the request. For example, for the request method SPAM, the :meth:`do_SPAM` method will be called with no arguments. All of the relevant information is stored in instance variables of the handler. Subclasses should not need to override or extend the :meth:`__init__` method.

:class:`BaseHTTPRequestHandler` has the following instance variables:

.. attribute:: client_address

 Contains a tuple of the form ``(host, port)`` referring to the client's
 address.


.. attribute:: server

 Contains the server instance.


.. attribute:: command

 Contains the command (request type). For example, ``'GET'``.


.. attribute:: path

 Contains the request path.


.. attribute:: request_version

 Contains the version string from the request. For example, ``'HTTP/1.0'``.


.. attribute:: headers

 Holds an instance of the class specified by the :attr:`MessageClass` class
 variable. This instance parses and manages the headers in the HTTP
 request.


.. attribute:: rfile

 Contains an input stream, positioned at the start of the optional input
 data.


.. attribute:: wfile

 Contains the output stream for writing a response back to the
 client. Proper adherence to the HTTP protocol must be used when writing to
 this stream.


:class:`BaseHTTPRequestHandler` has the following class variables:

.. attribute:: server_version

 Specifies the server software version. You may want to override this. The
 format is multiple whitespace-separated strings, where each string is of
 the form name[/version]. For example, ``'BaseHTTP/0.2'``.


.. attribute:: sys_version

 Contains the Python system version, in a form usable by the
 :attr:`version_string` method and the :attr:`server_version` class
 variable. For example, ``'Python/1.4'``.


.. attribute:: error_message_format

 Specifies a format string for building an error response to the client. It
 uses parenthesized, keyed format specifiers, so the format operand must be
 a dictionary. The *code* key should be an integer, specifying the numeric
 HTTP error code value. *message* should be a string containing a
 (detailed) error message of what occurred, and *explain* should be an
 explanation of the error code number. Default *message* and *explain*
 values can found in the *responses* class variable.


.. attribute:: error_content_type

 Specifies the Content-Type HTTP header of error responses sent to the
 client. The default value is ``'text/html'``.

 .. versionadded:: 2.6
 Previously, the content type was always ``'text/html'``.


.. attribute:: protocol_version

 This specifies the HTTP protocol version used in responses. If set to
 ``'HTTP/1.1'``, the server will permit HTTP persistent connections;
 however, your server *must* then include an accurate ``Content-Length``
 header (using :meth:`send_header`) in all of its responses to clients.
 For backwards compatibility, the setting defaults to ``'HTTP/1.0'``.


.. attribute:: MessageClass

 .. index:: single: Message (in module mimetools)

 Specifies a :class:`rfc822.Message`\ -like class to parse HTTP headers.
 Typically, this is not overridden, and it defaults to
 :class:`mimetools.Message`.


.. attribute:: responses

 This variable contains a mapping of error code integers to two-element tuples
 containing a short and long message. For example, ``{code: (shortmessage,
 longmessage)}``. The *shortmessage* is usually used as the *message* key in an
 error response, and *longmessage* as the *explain* key (see the
 :attr:`error_message_format` class variable).


A :class:`BaseHTTPRequestHandler` instance has the following methods:

.. method:: handle()

 Calls :meth:`handle_one_request` once (or, if persistent connections are
 enabled, multiple times) to handle incoming HTTP requests. You should
 never need to override it; instead, implement appropriate :meth:`do_\*`
 methods.


.. method:: handle_one_request()

 This method will parse and dispatch the request to the appropriate
 :meth:`do_\*` method. You should never need to override it.


.. method:: send_error(code[, message])

 Sends and logs a complete error reply to the client. The numeric *code*
 specifies the HTTP error code, with *message* as optional, more specific text. A
 complete set of headers is sent, followed by text composed using the
 :attr:`error_message_format` class variable.


.. method:: send_response(code[, message])

 Sends a response header and logs the accepted request. The HTTP response
 line is sent, followed by *Server* and *Date* headers. The values for
 these two headers are picked up from the :meth:`version_string` and
 :meth:`date_time_string` methods, respectively.


.. method:: send_header(keyword, value)

 Writes a specific HTTP header to the output stream. *keyword* should
 specify the header keyword, with *value* specifying its value.


.. method:: end_headers()

 Sends a blank line, indicating the end of the HTTP headers in the
 response.


.. method:: log_request([code[, size]])

 Logs an accepted (successful) request. *code* should specify the numeric
 HTTP code associated with the response. If a size of the response is
 available, then it should be passed as the *size* parameter.


.. method:: log_error(...)

 Logs an error when a request cannot be fulfilled. By default, it passes
 the message to :meth:`log_message`, so it takes the same arguments
 (*format* and additional values).


.. method:: log_message(format, ...)

 Logs an arbitrary message to ``sys.stderr``. This is typically overridden
 to create custom error logging mechanisms. The *format* argument is a
 standard printf-style format string, where the additional arguments to
 :meth:`log_message` are applied as inputs to the formatting. The client
 address and current date and time are prefixed to every message logged.


.. method:: version_string()

 Returns the server software's version string. This is a combination of the
 :attr:`server_version` and :attr:`sys_version` class variables.


.. method:: date_time_string([timestamp])

 Returns the date and time given by *timestamp* (which must be in the
 format returned by :func:`time.time`), formatted for a message header. If
 *timestamp* is omitted, it uses the current date and time.

 The result looks like ``'Sun, 06 Nov 1994 08:49:37 GMT'``.

 .. versionadded:: 2.5
 The *timestamp* parameter.


.. method:: log_date_time_string()

 Returns the current date and time, formatted for logging.


.. method:: address_string()

 Returns the client address, formatted for logging. A name lookup is
 performed on the client's IP address.
.. seealso::

 Module :mod:`CGIHTTPServer`
 Extended request handler that supports CGI scripts.

 Module :mod:`SimpleHTTPServer`
 Basic request handler that limits response to files actually under the document
 root.

Loading...
举报
举报成功
我们将于2个工作日内通过站内信反馈结果给你!
请认真填写举报原因,尽可能描述详细。
请选择举报类型
取消
发送
误判申诉

此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。

如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。

取消
提交

简介

github.com clone
暂无标签
未知许可证
查看未知开源许可协议
取消

发行版

暂无发行版

贡献者

全部

近期动态

不能加载更多了
编辑仓库简介
简介内容
主页
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Python
1
https://gitee.com/yf33/python.git
git@gitee.com:yf33/python.git
yf33
python
python
master
点此查找更多帮助

搜索帮助

评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册

AltStyle によって変換されたページ (->オリジナル) /