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

Python中BaseHTTPServer.HTTPServer的构造函数__init__()详述

发布时间:2023-12-23 01:50:11

BaseHTTPServer.HTTPServer是Python标准库中的一个类,用于创建一个简单的HTTP服务器。它的构造函数__init__()用于初始化服务器对象,并设置服务器监听的地址、端口以及请求处理类。

基本语法如下:

class BaseHTTPServer.HTTPServer(server_address, RequestHandlerClass)

其中,server_address参数是一个元组,表示服务器监听的地址和端口号。RequestHandlerClass参数是一个处理请求的类,它必须继承自BaseHTTPServer.BaseHTTPRequestHandler类。这个类是一个抽象基类,用于处理HTTP请求。

下面通过一个例子来详细说明BaseHTTPServer.HTTPServer的使用。

import BaseHTTPServer

class MyHandler(BaseHTTPServer.BaseHTTPRequestHandler):
    def do_GET(self):
        self.send_response(200)
        self.send_header('Content-type', 'text/html')
        self.end_headers()
        self.wfile.write("<h1>Hello, World!</h1>")
        
def main():
    server_address = ('', 8000)
    httpd = BaseHTTPServer.HTTPServer(server_address, MyHandler)
    print "Server running on port 8000..."
    httpd.serve_forever()

if __name__ == '__main__':
    main()

在这个例子中,首先定义了一个自定义的请求处理类MyHandler,它继承自BaseHTTPServer.BaseHTTPRequestHandler类,并重写了do_GET()方法。在这个方法中,我们发送了一个200响应状态码,设置了Content-type为text/html,然后发送了一个简单的HTML响应。

在main()函数中,我们先创建了一个服务器地址的元组,表示服务器监听的地址和端口号。然后使用BaseHTTPServer.HTTPServer类的构造函数创建了一个HTTP服务器对象httpd,传入了服务器地址和请求处理类MyHandler。最后调用httpd的serve_forever()方法,使服务器一直运行。

可以通过运行这个脚本,启动一个监听在8000端口的HTTP服务器。当访问http://localhost:8000时,会收到一个简单的HTML响应。

总结一下,BaseHTTPServer.HTTPServer的构造函数__init__()用于创建一个HTTP服务器对象,并设置服务器监听的地址、端口以及请求处理类。可以通过继承BaseHTTPServer.BaseHTTPRequestHandler类,重写do_GET()、do_POST()等方法来处理HTTP请求。