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

Python中的SimpleHTTPRequestHandler()模块及其用法介绍

发布时间:2023-12-17 12:49:15

SimpleHTTPRequestHandler()是Python内置的一个HTTP请求处理模块,它提供了一个简单的Web服务器,可以用来处理HTTP请求并返回相应的HTML页面或文件。

SimpleHTTPRequestHandler()用法示例:

首先,导入模块:

from http.server import SimpleHTTPRequestHandler

接下来,创建一个简单的Web服务器:

server_address = ('', 8000)
httpd = socketserver.TCPServer(server_address, SimpleHTTPRequestHandler)

然后,运行服务器,开始监听HTTP请求:

httpd.serve_forever()

这样就创建了一个简单的Web服务器,它将监听本地的8000端口,并可以处理HTTP请求。

当服务器收到一个HTTP请求时,SimpleHTTPRequestHandler会自动调用相应的处理方法来处理这个请求,并返回相应的HTML页面或文件。

以下是SimpleHTTPRequestHandler的一些常用方法和属性:

- do_GET():处理GET请求,并返回相应的HTML页面或文件。

- do_POST():处理POST请求,并返回相应的HTML页面或文件。

- send_response(code):发送响应码。

- send_header(keyword, value):发送响应头。

- end_headers():结束响应头的发送。

- wfile:一个可以写入响应内容的文件对象。

下面是一个完整的示例,用来创建一个简单的Web服务器,处理GET和POST请求,并返回相应的HTML页面:

from http.server import BaseHTTPRequestHandler, HTTPServer

# 创建一个处理GET和POST请求的类
class MyHandler(BaseHTTPRequestHandler):
    def do_GET(self):
        self.send_response(200)
        self.send_header('Content-type', 'text/html')
        self.end_headers()
        self.wfile.write(b'<html><body><h1>Hello, World!</h1></body></html>')

    def do_POST(self):
        content_len = int(self.headers.get('Content-Length'))
        post_body = self.rfile.read(content_len).decode('utf-8')
        self.send_response(200)
        self.send_header('Content-type', 'text/html')
        self.end_headers()
        self.wfile.write(b'<html><body>')
        self.wfile.write(b'<h1>POST Request Received:</h1>')
        self.wfile.write(b'<pre>')
        self.wfile.write(post_body.encode('utf-8'))
        self.wfile.write(b'</pre>')
        self.wfile.write(b'</body></html>')

# 创建一个HTTP服务器,并将处理类绑定到服务器上
def run(server_class=HTTPServer, handler_class=MyHandler, port=8000):
    server_address = ('', port)
    httpd = server_class(server_address, handler_class)
    print(f'Starting server on port {port}...')
    httpd.serve_forever()

# 运行服务器
if __name__ == '__main__':
    run()

以上代码创建了一个简单的Web服务器,它会在8000端口上监听HTTP请求。当收到GET请求时,会返回一个包含"Hello, World!"的HTML页面;当收到POST请求时,会返回一个包含请求体内容的HTML页面。

可以通过在浏览器中访问http://localhost:8000来测试这个Web服务器。

总结:

SimpleHTTPRequestHandler()是Python中一个简单的HTTP请求处理模块,它提供了一个简单的Web服务器,可以用来处理HTTP请求并返回相应的HTML页面或文件。它非常适合用于快速搭建一个简单的本地测试服务器。