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服务器。
