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

Python中http.server.BaseHTTPRequestHandler详细说明

发布时间:2024-01-04 17:58:18

BaseHTTPRequestHandler是Python提供的一个用于处理HTTP请求的基类,它位于http.server模块中。它提供了一些方法,可以用于处理不同的HTTP请求,包括GET、POST等。

下面是一个示例代码,演示如何使用BaseHTTPRequestHandler创建一个简单的HTTP服务器:

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(b"Hello, World!")

def main():
    try:
        server = HTTPServer(('', 8080), MyHandler)
        print('Started HTTP server on port 8080')
        server.serve_forever()
    except KeyboardInterrupt:
        print('^C received, shutting down the web server')
        server.socket.close()

if __name__ == '__main__':
    main()

在上面的代码中,我们定义了一个名为MyHandler的子类,继承自BaseHTTPRequestHandler。

我们重写了do_GET方法,当收到GET请求时,会调用该方法。在该方法中,我们首先发送一个响应头,然后发送一个响应体,内容为"Hello, World!"。

我们还定义了一个main函数,用于创建HTTPServer实例,并指定服务器的地址和端口。然后调用serve_forever()方法,使服务器一直运行,直到收到中断信号。

运行该程序后,你可以使用浏览器访问http://localhost:8080,就能看到页面显示"Hello, World!"。

除了do_GET方法,BaseHTTPRequestHandler还提供了其他一些方法,可以用于处理不同类型的HTTP请求。

- do_HEAD():处理HEAD请求

- do_POST():处理POST请求

- do_PUT():处理PUT请求

- do_DELETE():处理DELETE请求

你可以根据需要重写这些方法,来处理不同的请求类型。

除了处理不同类型的请求,BaseHTTPRequestHandler还提供了一些属性和方法,可以用于获取请求相关的信息,如请求方式、请求头、URL等。

- self.command:获取请求的方法,如'GET'、'POST'等

- self.path:获取请求的URL路径

- self.headers:获取请求的头部信息

- self.send_response():发送一个HTTP响应码

- self.send_header():发送一个HTTP响应头

- self.end_headers():结束HTTP响应头的发送

- self.wfile.write():发送响应体的内容

总结起来,BaseHTTPRequestHandler是一个很灵活的类,可以通过重写其中的方法来自定义处理HTTP请求的逻辑。