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

使用Python中BaseHTTPServer.BaseHTTPRequestHandlerhandle()处理不同类型的HTTP请求

发布时间:2024-01-08 18:06:04

BaseHTTPServer.BaseHTTPRequestHandler类是Python中内置的HTTP服务器处理程序的基类。它提供了一个handle()方法,用于处理不同类型的HTTP请求。在这个方法中,你可以根据请求的类型执行不同的操作。

下面是一个使用BaseHTTPRequestHandler.handle()处理不同类型的HTTP请求的例子:

from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer

# 创建一个自定义的HTTPRequestHandler类
class MyHTTPRequestHandler(BaseHTTPRequestHandler):

    # 处理GET请求
    def do_GET(self):
        # 设置响应的状态码和头部
        self.send_response(200)
        self.send_header('Content-type', 'text/html')
        self.end_headers()
        
        # 返回一个HTML页面作为响应内容
        self.wfile.write("<html><head><title>My Website</title></head>")
        self.wfile.write("<body><h1>Welcome to My Website!</h1></body></html>")
        return

    # 处理POST请求
    def do_POST(self):
        # 获取POST请求的数据长度
        content_length = int(self.headers['Content-Length'])
        # 读取POST请求的数据
        post_data = self.rfile.read(content_length)

        # 设置响应的状态码和头部
        self.send_response(200)
        self.send_header('Content-type', 'text/html')
        self.end_headers()
        
        # 返回一个包含POST请求数据的HTML页面作为响应内容
        self.wfile.write("<html><head><title>POST Data</title></head>")
        self.wfile.write("<body><h1>POST Data:</h1><p>{}</p></body></html>".format(post_data))
        return

# 创建一个HTTP服务器实例,并注册自定义的请求处理程序
server = HTTPServer(('localhost', 8000), MyHTTPRequestHandler)
print('HTTP Server Running.........')
# 启动HTTP服务器
server.serve_forever()

上述代码创建了一个简单的HTTP服务器,监听本地的8000端口。当客户端发送GET请求时,服务器将返回一个包含欢迎消息的HTML页面。当客户端发送POST请求时,服务器将返回一个包含POST请求数据的HTML页面。

你可以使用浏览器或其他HTTP工具发送请求到这个服务器。例如,使用curl工具可以发送GET请求:

$ curl http://localhost:8000

你可以使用curl或其他HTTP工具发送POST请求并携带一些数据:

$ curl -X POST -d "name=John&age=28" http://localhost:8000

服务器会根据请求的类型执行不同的操作,并相应地返回不同的内容。

这只是一个简单的例子,你可以根据需要扩展和定制处理不同类型的HTTP请求。