Python中的SimpleHTTPRequestHandler()模块及其用法介绍
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页面或文件。它非常适合用于快速搭建一个简单的本地测试服务器。
