Python中BaseHTTPServertest()函数的基本使用方法
BaseHTTPServer模块是Python内置的HTTP服务器模块,可以用来创建基本的HTTP服务器。BaseHTTPServer.HTTPServer类是BaseHTTPServer模块中最重要的类,它继承自SocketServer.TCPServer类。BaseHTTPServer.HTTPServer类提供了一些方法来创建和启动HTTP服务器,例如serve_forever()方法用于启动服务器,handle_request()方法用于处理客户端请求。
下面是BaseHTTPServer.HTTPServer类主要的方法和简单的使用示例:
1. __init__(server_address, RequestHandlerClass)
构造方法,用于初始化HTTP服务器对象。server_address参数指定服务器的监听地址和端口,RequestHandlerClass参数指定请求处理类。
示例代码:
from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler
# 自定义的请求处理类
class MyRequestHandler(BaseHTTPRequestHandler):
def do_GET(self):
self.send_response(200)
self.send_header('Content-type', 'text/html')
self.end_headers()
self.wfile.write("Hello, World!")
# 创建HTTP服务器对象
server_address = ('', 8000)
httpd = HTTPServer(server_address, MyRequestHandler)
2. serve_forever()
启动服务器,开始监听客户端请求。该方法会一直运行,直到服务器被停止。
示例代码:
httpd.serve_forever()
3. handle_request()
处理单个客户端请求。当有客户端发送请求时,该方法会自动调用请求处理类的do_XXX方法来处理请求。
示例代码:
httpd.handle_request()
4. serve_until_stop()
启动服务器并监听客户端请求,直到服务器被停止。与serve_forever()方法不同的是,这个方法会在处理完一个请求后返回。
示例代码:
httpd.serve_until_stop()
5. shutdown()
停止服务器。
示例代码:
httpd.shutdown()
上面的示例代码中使用了自定义的请求处理类MyRequestHandler,它是BaseHTTPRequestHandler的子类。do_GET()方法是处理GET请求的方法,每个请求处理方法都需要自己实现。
当运行上面的代码并访问http://localhost:8000时,就会得到一个包含"Hello, World!"的网页。这是因为在do_GET()方法中通过self.wfile.write()方法向客户端发送了响应数据。
可以根据实际需求来实现其他请求处理方法,例如处理POST请求的do_POST()方法等。同时也可以使用其他模块配合BaseHTTPServer来实现更复杂的功能,例如使用CGI模块来处理动态内容。
