Python中的SimpleHTTPRequestHandler()以及其基本功能介绍
发布时间:2023-12-17 12:45:31
SimpleHTTPRequestHandler是Python中内置的一个HTTP请求处理器类,它继承自BaseHTTPRequestHandler。SimpleHTTPRequestHandler能够处理GET、HEAD和POST请求,并且可以发送静态文件。
使用SimpleHTTPRequestHandler的步骤如下:
1. 导入模块:
from http.server import HTTPServer, SimpleHTTPRequestHandler
2. 创建一个HTTP服务器并指定请求处理器:
server_address = ('', 8000)
httpd = HTTPServer(server_address, SimpleHTTPRequestHandler)
3. 启动服务器:
httpd.serve_forever()
启动服务器后,可以通过指定的地址和端口访问服务器。默认情况下,SimpleHTTPRequestHandler会在当前目录下查找文件并返回对应的静态文件。
以下是SimpleHTTPRequestHandler的几个基本功能:
1. 处理GET请求
当客户端发送GET请求时,SimpleHTTPRequestHandler会在本地查找相应的文件,并返回给客户端。若找不到文件,则返回404错误。
# 获取GET请求的路径
path = self.path
# 根据路径打开文件,并发送给客户端
with open(path, 'rb') as file:
self.send_response(200)
self.end_headers()
self.wfile.write(file.read())
2. 处理HEAD请求
HEAD请求和GET请求类似,只是服务器在返回响应时不返回实体主体。SimpleHTTPRequestHandler可以正确地处理HEAD请求。
# 返回响应头,不返回实体主体 self.send_response(200) self.end_headers()
3. 处理POST请求
SimpleHTTPRequestHandler可以处理POST请求并获取请求中的数据。
# 获取POST请求的数据长度 content_length = int(self.headers['Content-Length']) # 从请求中读取数据 post_data = self.rfile.read(content_length)
4. 发送404错误
当SimpleHTTPRequestHandler找不到请求的文件时,会返回404错误。
# 发送404错误响应 self.send_error(404, 'File Not Found')
以下是一个完整的使用SimpleHTTPRequestHandler的例子:
from http.server import HTTPServer, SimpleHTTPRequestHandler
class MyHandler(SimpleHTTPRequestHandler):
def do_GET(self):
path = self.path
if path == '/hello':
self.send_response(200)
self.end_headers()
self.wfile.write(b'Hello World!')
else:
self.send_error(404, 'File Not Found')
server_address = ('', 8000)
httpd = HTTPServer(server_address, MyHandler)
httpd.serve_forever()
上述例子创建了一个HTTP服务器,并自定义了一个处理器类MyHandler,处理器类重写了do_GET方法来处理GET请求。当访问根路径“/hello”时,服务器返回“Hello World!”;否则返回404错误。
