Python中的BaseHTTPServer.HTTPServer模块详细讲解
BaseHTTPServer.HTTPServer模块是Python中内置的HTTP服务器类,它实现了一个简单的HTTP服务器,可以用于搭建基本的web服务。
使用BaseHTTPServer.HTTPServer搭建一个简单的HTTP服务器可以分为以下几个步骤:
1. 导入BaseHTTPServer模块
import BaseHTTPServer
2. 创建一个自定义的处理程序类,继承自BaseHTTPServer.BaseHTTPRequestHandler,并重写处理请求的方法do_GET或do_POST等
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("Hello, World!")
def do_POST(self):
# 处理POST请求的逻辑
pass
在上述示例中,我们创建了一个自定义的处理程序类MyHandler,并重写了do_GET方法来处理GET请求。在do_GET方法中,我们首先发送一个200的HTTP响应头,然后发送一个Content-type为text/html的响应头,最后发送"Hello, World!"作为响应体。
3. 创建HTTP服务器实例,绑定IP和端口,将自定义的处理程序类作为处理器传入
def run():
server_address = ('', 8000)
httpd = BaseHTTPServer.HTTPServer(server_address, MyHandler)
print 'Starting server...'
httpd.serve_forever()
run()
在上述示例中,我们首先定义了服务器的地址为('', 8000),这表示绑定在本地IP地址上,并监听8000端口。然后,我们创建了HTTP服务器实例httpd,并将MyHandler作为处理器传入。最后,我们调用serve_forever方法,启动HTTP服务器。
当我们运行这段代码后,就会在本地启动一个HTTP服务器,监听8000端口。当有请求到达时,就会调用我们自定义的处理程序类中相应的方法来处理请求。
下面我们用一个例子来说明如何使用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("Hello, World!")
def run():
server_address = ('', 8000)
httpd = BaseHTTPServer.HTTPServer(server_address, MyHandler)
print 'Starting server...'
httpd.serve_forever()
run()
当我们运行以上代码后,在浏览器中访问http://localhost:8000,则会显示"Hello, World!"。这表示我们的HTTP服务器已经成功启动,并且能够正确地处理GET请求。
