欢迎访问宙启技术站
智能推送

Python中http.server.BaseHTTPRequestHandler的属性和方法详解

发布时间:2024-01-04 17:57:27

在Python中,http.server.BaseHTTPRequestHandler是一个用于处理HTTP请求的基类。它提供了一些属性和方法来处理请求和发送响应。下面是这个类的一些重要的属性和方法的详细解释:

属性:

- client_address:客户端的地址。

- requestline:请求行字符串。

- command:请求类型 (GET, POST, HEAD, etc.)。

- path:请求路径。

- headers:请求头。

- body:请求体。

方法:

- do_GET():处理GET请求。

- do_POST():处理POST请求。

- do_HEAD():处理HEAD请求。

- do_PUT():处理PUT请求。

- do_DELETE():处理DELETE请求。

- send_response(code, message=None):发送响应状态码和消息。

- send_header(header, value):发送一个响应头。

- end_headers():结束响应头的发送。

- send_response_only():只发送响应状态码,不发送响应头。

- send_error(code, message=None, explain=None):发送错误响应。

- translate_path(path):将请求路径转换为对应的本地路径。

- do_HEAD():处理HEAD请求。

- do_OPTIONS():处理OPTIONS请求。

- do_TRACE():处理TRACE请求。

- do_CONNECT():处理CONNECT请求。

- do_PATCH():处理PATCH请求。

- do_MOVE():处理MOVE请求。

- do_COPY():处理COPY请求。

下面是一个使用BaseHTTPRequestHandler的示例,用于创建一个简单的HTTP服务器并处理GET请求:

from http.server import BaseHTTPRequestHandler, HTTPServer

class MyHandler(BaseHTTPRequestHandler):
    def do_GET(self):
        self.send_response(200)
        self.send_header('Content-type', 'text/html')
        self.end_headers()
        self.wfile.write(bytes("<html><head><title>My Server</title></head>", "utf-8"))
        self.wfile.write(bytes("<body><p>This is a simple HTTP server.</p>", "utf-8"))
        self.wfile.write(bytes("</body></html>", "utf-8"))

if __name__ == '__main__':
    server = HTTPServer(('localhost', 8000), MyHandler)
    print('Server running on port 8000...')
    server.serve_forever()

在这个示例中,我们创建了一个自定义的处理程序MyHandler,它继承自BaseHTTPRequestHandler。在do_GET()方法中,我们发送了一个响应状态码为200的响应和一个简单的HTML页面。

通过运行这个示例,你可以在本地启动一个简单的HTTP服务器,并通过访问http://localhost:8000来查看生成的页面。