Python库http.server中的类BaseHTTPRequestHandler的成员变量path的意义及简单示例代码

以下是一个简单的示例代码,演示了如何使用 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路径中,主机之后的字符串,包括字符“/”哦。

猜你喜欢

转载自blog.csdn.net/wenhao_ir/article/details/129843007