简单易懂的SimpleHTTPServer教程和示例
SimpleHTTPServer是Python提供的一个模块,用于在本地快速建立一个简单的HTTP服务器。它可以帮助我们快速地共享文件和文档,或者作为一个简单的测试服务器。
使用SimpleHTTPServer非常简单,只需要一行命令即可启动一个服务器。下面是一个使用SimpleHTTPServer的示例:
python -m SimpleHTTPServer
这个命令会默认在当前目录下启动一个服务器,监听8000端口。如果想要指定端口号,可以在命令中指定,如下所示:
python -m SimpleHTTPServer 8080
这个命令会在指定的端口号上启动服务器。
启动服务器后,可以通过浏览器访问http://localhost:8000(或指定的端口号)来访问服务器。
SimpleHTTPServer的默认行为是将当前目录下的文件作为服务器的资源。例如,如果当前目录下存在一个名为index.html的文件,那么可以通过http://localhost:8000/index.html来访问这个文件。
SimpleHTTPServer除了可以访问静态文件外,还可以用于处理动态请求。例如,可以编写一个简单的cgi脚本来处理GET和POST请求。
下面是一个使用SimpleHTTPServer处理GET和POST请求的示例:
from SimpleHTTPServer import SimpleHTTPRequestHandler
class MyHandler(SimpleHTTPRequestHandler):
def do_GET(self):
# 处理GET请求
self.send_response(200)
self.send_header('Content-type', 'text/html')
self.end_headers()
self.wfile.write('Hello, World!')
def do_POST(self):
# 处理POST请求
content_length = int(self.headers.getheader('Content-Length'))
post_data = self.rfile.read(content_length)
# 处理post_data
self.send_response(200)
self.send_header('Content-type', 'text/html')
self.end_headers()
self.wfile.write('Hello, World!')
if __name__ == '__main__':
from BaseHTTPServer import HTTPServer
server = HTTPServer(('localhost', 8000), MyHandler)
server.serve_forever()
这个示例创建了一个继承自SimpleHTTPRequestHandler的自定义Handler类。在这个类中,我们重写了do_GET和do_POST方法来处理GET和POST请求。
在do_GET方法中,我们首先发送一个响应头,然后发送一个包含"Hello, World!"的响应体。
在do_POST方法中,我们首先获取POST请求的内容,然后进行相应的处理。在这个示例中,我们只是简单地返回一个包含"Hello, World!"的响应体。
最后,我们创建了一个HTTPServer实例,并将自定义Handler类传递给它。然后调用serve_forever方法来启动服务器。
以上就是一个简单的使用SimpleHTTPServer的示例。通过这个示例,我们可以很容易地了解SimpleHTTPServer的使用方法和原理。如果有需要,我们还可以进一步扩展自定义Handler类,并根据实际需要处理更复杂的HTTP请求。
