Python 实现简单 Web 服务器

1次阅读

python内置http.server模块可快速搭建简易web服务器:命令行执行python -m http.server 8000即可提供静态文件服务;自定义basehttprequesthandler类可处理get/post、实现路由与动态响应,但仅适用于本地测试,不适用于生产环境。

Python 实现简单 Web 服务器

用 Python 写一个简单 Web 服务器,最直接的方式是使用内置的 http.server 模块,无需安装额外依赖,适合快速测试、本地开发或教学演示。

用命令行快速启动静态服务器

在终端进入你存放 HTML、CSS、js 等文件的目录,执行:

python -m http.server 8000

默认监听 http://localhost:8000,支持 GET 请求,自动列出当前目录下的文件(如果含 index.html 则优先显示)。端口号可换成任意可用数字(如 3000、5000)。

立即学习Python免费学习笔记(深入)”;

自定义基础 HTTP 处理器

若需控制响应内容(比如返回固定文本或简单 json),可继承 http.server.BaseHTTPRequestHandler

from http.server import httpserver, BaseHTTPRequestHandler<br><br>class SimpleHandler(BaseHTTPRequestHandler):<br>    def do_GET(self):<br>        self.send_response(200)<br>        self.send_header('Content-type', 'text/plain; charset=utf-8')<br>        self.end_headers()<br>        self.wfile.write(b'Hello from Python web server!')<br><br>if __name__ == '__main__':<br>    server = HTTPServer(('localhost', 8000), SimpleHandler)<br>    print("Server running on http://localhost:8000")<br>    server.serve_forever()

关键点:
do_GET 处理 GET 请求,也可实现 do_POST
• 必须显式调用 send_responseend_headers
• 响应体要写入 self.wfile,且必须是 bytes 类型(加 b'' 或用 .encode()

支持简单路由和动态内容

可在 do_GET 中根据 self.path 做路径分发:

def do_GET(self):<br>    if self.path == '/':<br>        self.send_response(200)<br>        self.send_header('Content-type', 'text/html')<br>        self.end_headers()<br>        self.wfile.write(b'<h1>Home Page</h1>')<br>    elif self.path == '/api/time':<br>        import json, datetime<br>        self.send_response(200)<br>        self.send_header('Content-type', 'application/json')<br>        self.end_headers()<br>        data = {'time': datetime.datetime.now().isoformat()}<br>        self.wfile.write(json.dumps(data).encode())<br>    else:<br>        self.send_error(404, 'Not Found')

注意:
• 路径含查询参数(如 /search?q=python)时,self.path 包含完整字符串,可用 urllib.parse.urlparse 解析
• 不处理 POST 数据时,记得忽略或返回 405 错误

小提醒:这不是生产环境方案

http.server 是单线程、阻塞式实现,不支持并发请求,也没有 HTTPS、静态文件缓存、URL 重写等能力。实际项目推荐:
flask(轻量,适合 API 或小网站)
fastapi(高性能,自带 OpenAPI)
django(全功能框架,适合中大型应用)

text=ZqhQzanResources