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

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错误。