Python中http.server.BaseHTTPRequestHandler的属性和方法详解
在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来查看生成的页面。
