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

Python中的http.server.BaseHTTPRequestHandler类,如何使用

发布时间:2024-01-04 17:55:49

http.server.BaseHTTPRequestHandler类是Python中用于处理HTTP请求的基类,可以通过继承该类来创建自定义的HTTP服务器。

下面是一个简单的使用BaseHTTPRequestHandler类的示例:

from http.server import BaseHTTPRequestHandler, HTTPServer

class MyHandler(BaseHTTPRequestHandler):
    def do_GET(self):
        self.send_response(200)  # 返回响应状态码
        self.send_header('Content-type', 'text/html')  # 设置响应头的Content-type字段
        self.end_headers()
        self.wfile.write(b"Hello, World!")  # 返回响应体的内容

def run(server_class=HTTPServer, handler_class=MyHandler, port=8000):
    server_address = ('', port)
    httpd = server_class(server_address, handler_class)
    print(f"Server running on port {port}")
    httpd.serve_forever()

run()

在这个示例中,我们创建了一个自定义的处理器类MyHandler,继承自BaseHTTPRequestHandler。在MyHandler中,我们重写了do_GET方法来处理GET请求。

在do_GET方法中,我们首先使用self.send_response(200)设置响应状态码为200。然后使用self.send_header方法来设置响应头的Content-type字段为"text/html"。接着调用self.end_headers()来结束响应头的设置。

最后,使用self.wfile.write方法将"Hello, World!"作为响应体的内容返回给客户端。

在run函数中,我们创建了一个HTTPServer实例,并将自定义的处理器类MyHandler作为参数传入。然后调用serve_forever方法来启动服务器并监听指定的端口。

运行这个脚本后,你可以在浏览器中访问http://localhost:8000来查看输出的"Hello, World!"。

此外,BaseHTTPRequestHandler还提供了其他的方法(如do_POST、do_PUT等)来处理不同类型的HTTP请求。你可以根据具体需求来重写这些方法。

以上是BaseHTTPRequestHandler类的简单使用示例,你可以根据实际需要来扩展和定制你的HTTP服务器。