使用Python中的http.server.BaseHTTPRequestHandler创建简单的WEB服务器
发布时间:2024-01-04 18:02:57
在Python中,可以使用http.server.BaseHTTPRequestHandler类来创建简单的WEB服务器。BaseHTTPRequestHandler是一个Python内置的HTTP请求处理器类,它可以被继承以创建自定义的请求处理器类。下面是一个简单的使用BaseHTTPRequestHandler创建WEB服务器的例子:
from http.server import BaseHTTPRequestHandler, HTTPServer
# 自定义的请求处理器类继承自BaseHTTPRequestHandler
class MyRequestHandler(BaseHTTPRequestHandler):
# 处理GET请求
def do_GET(self):
# 设置响应状态码为200(表示成功)
self.send_response(200)
# 设置响应头
self.send_header('Content-type', 'text/html')
self.end_headers()
# 构造响应内容
response = "<h1>Hello, World!</h1>"
# 发送响应内容
self.wfile.write(response.encode())
# 处理POST请求
def do_POST(self):
# 获取POST请求的数据内容
content_length = int(self.headers['Content-Length'])
post_data = self.rfile.read(content_length).decode('utf-8')
# 设置响应状态码为200
self.send_response(200)
# 设置响应头
self.send_header('Content-type', 'text/html')
self.end_headers()
# 构造响应内容
response = f"<h1>POST data: {post_data}</h1>"
# 发送响应内容
self.wfile.write(response.encode())
# 创建HTTP服务器并指定请求处理器类
server_address = ('', 8000)
httpd = HTTPServer(server_address, MyRequestHandler)
# 启动服务器
print('Starting server...')
httpd.serve_forever()
在上述例子中,我们创建了一个自定义的请求处理器类MyRequestHandler,它继承自BaseHTTPRequestHandler。在MyRequestHandler中,我们重写了do_GET和do_POST方法来处理GET和POST请求。当收到GET请求时,服务器会返回一个HTML标题为"Hello, World!"的响应,当收到POST请求时,服务器会返回POST请求的数据内容。
然后,我们创建了一个HTTP服务器实例,并指定服务器地址为('', 8000),这里表示将服务器绑定到本地IP地址的8000端口上。最后调用serve_forever()方法启动服务器。
在运行上述代码后,可以在浏览器中访问http://localhost:8000来测试GET请求,或使用curl命令来测试POST请求:
$ curl -X POST -d "name=John&age=25" http://localhost:8000
可以看到服务器返回的响应内容。这就是一个简单的使用http.server.BaseHTTPRequestHandler创建的WEB服务器的例子。
