以下是一个简单的示例代码,演示了如何使用 BaseHTTPRequestHandler 处理 HTTP 请求并打印请求路径:
from http.server import BaseHTTPRequestHandler, HTTPServer
class MyRequestHandler(BaseHTTPRequestHandler):
def do_GET(self):
# 打印请求路径
print(self.path)
# 发送响应
self.send_response(200)
self.end_headers()
self.wfile.write(b'Hello, World!')
if __name__ == '__main__':
# 创建 HTTP 服务器,并指定请求处理器
server = HTTPServer(('localhost', 8000), MyRequestHandler)
print('Starting server, listening on http://localhost:8000')
# 启动服务器
server.serve_forever()
在上面的这个例子中:
我们定义了一个名为 MyRequestHandler 的子类,继承了 BaseHTTPRequestHandler。
我们覆盖了 do_GET() 方法,以实现对 HTTP GET 请求的处理。在这个方法中,我们使用 self.path 打印了请求的路径,并发送了一个简单的响应。
最后,我们创建了一个 HTTP 服务器,并将请求处理器设置为 MyRequestHandler。通过调用 serve_forever() 方法来启动服务器,以便能够处理传入的 HTTP 请求。
运行上面的代码后,控制台的输出如下:
当我们在浏览器中输入下面这个路径时:
http://localhost:8000/suwenhao15
立即得到以下的结果:
当我们在浏览器中输入下面这个路径时:
http://localhost:8000/search?q=python
得到下面的结果:
但是如果输入的URL路径比较长时,就反应很慢,要等几分钟才能出结果,不知道是怎么回事儿,比如下面这个:
http://localhost:8000/search?q=python+programming
暂且不管上面这个问题,通过实验,我们可以发现库http.server中的类BaseHTTPRequestHandler的成员变量path存储的内容是什么:即一个URL路径中,主机之后的字符串,包括字符“/”哦。