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

Python编程中如何使用BaseHTTPServer.BaseHTTPRequestHandler

发布时间:2024-01-16 05:28:06

在Python中使用BaseHTTPServer.BaseHTTPRequestHandler编写一个简单的HTTP服务器,需要继承BaseHTTPRequestHandler类,并实现一些处理请求的方法。下面是一个使用BaseHTTPServer.BaseHTTPRequestHandler的示例:

from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer

class MyHandler(BaseHTTPRequestHandler):

    def _set_headers(self, status_code=200):
        self.send_response(status_code)
        self.send_header('Content-type', 'text/html')
        self.end_headers()

    def do_GET(self):
        if self.path == '/':
            self._set_headers()
            self.wfile.write('<html><body><h1>Hello, World!</h1></body></html>')
        else:
            self._set_headers(404)
            self.wfile.write('<html><body><h1>Page Not Found</h1></body></html>')

def run(server_class=HTTPServer, handler_class=MyHandler, port=8080):
    server_address = ('', port)
    httpd = server_class(server_address, handler_class)
    try:
        print('Server running on port', port)
        httpd.serve_forever()
    except KeyboardInterrupt:
        pass
    finally:
        httpd.server_close()
        print('Server stopped.')

if __name__ == '__main__':
    run()

在上述示例中,定义了一个自定义的MyHandler类,继承自BaseHTTPRequestHandler类,并重写了do_GET方法来处理GET请求。在do_GET方法中,通过self.path可以获取请求的路径。如果请求的路径为'/',则返回一个Hello, World!的简单HTML页面,否则返回一个404 Page Not Found的HTML页面。

_set_headers方法用于设置HTTP响应的头部信息。在这个例子中,将状态码设置为200表示成功,并设置Content-typetext/html

run函数用于启动HTTP服务器,并指定服务器监听的端口。默认端口为8080,可以通过修改port参数来改变。如果收到KeyboardInterrupt异常,则停止服务器运行,并输出相应的提示信息。

最后,在__main__模块中调用run函数来启动服务器。

你可以通过运行上述代码来启动一个简单的HTTP服务器。在浏览器中访问http://localhost:8080,将会看到Hello, World!的页面。访问其他路径,将会返回Page Not Found页面。

以上是一个简单的使用BaseHTTPServer.BaseHTTPRequestHandler的例子,你可以根据自己的需求进一步扩展和修改。