You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何结合BaseHTTPRequestHandler与http.server实现多API端点?

用BaseHTTPRequestHandler实现多API端点并集成到http.server

完全可行,你可以通过继承BaseHTTPRequestHandler自定义请求处理器,让http.server使用这个处理器来处理不同API端点的请求。以下是具体实现步骤:

1. 项目结构

先搭建基础的项目目录:

your_project/
├── api/
│   └── helloworld.py
└── server.py

2. 编写自定义请求处理器

在api/helloworld.py中实现继承自BaseHTTPRequestHandler的子类,处理指定API路径的请求:

from http.server import BaseHTTPRequestHandler

class HelloWorldHandler(BaseHTTPRequestHandler):
    def do_GET(self):
        # 匹配目标API路径
        if self.path == '/api/helloworld':
            # 返回成功响应
            self.send_response(200)
            self.send_header('Content-type', 'text/plain; charset=utf-8')
            self.end_headers()
            self.wfile.write(b'Hello World')
        else:
            # 未匹配路径返回404
            self.send_response(404)
            self.send_header('Content-type', 'text/plain; charset=utf-8')
            self.end_headers()
            self.wfile.write(b'404 Not Found')

3. 集成处理器并启动服务器

在server.py中创建HTTPServer实例,指定自定义的处理器类:

from http.server import HTTPServer
from api.helloworld import HelloWorldHandler

def run_server():
    server_address = ('', 8000)  # 空字符串表示监听所有地址,端口8000
    httpd = HTTPServer(server_address, HelloWorldHandler)
    print('服务器启动在 http://localhost:8000')
    try:
        httpd.serve_forever()
    except KeyboardInterrupt:
        httpd.shutdown()
        print('服务器已关闭')

if __name__ == '__main__':
    run_server()

4. 运行与测试

在项目根目录执行命令:

python server.py

访问http://localhost:8000/api/helloworld即可看到Hello World;访问其他路径会返回404提示。

扩展多个API端点

如果需要添加更多端点,可以优化处理器的结构,用路由映射来管理不同路径对应的处理逻辑,让代码更易维护:

# 修改api/helloworld.py中的HelloWorldHandler
class HelloWorldHandler(BaseHTTPRequestHandler):
    def do_GET(self):
        # 路由映射:路径 -> 处理函数
        routes = {
            '/api/helloworld': self.handle_hello_world,
            '/api/greet': self.handle_greet,
            '/api/status': self.handle_status
        }
        # 匹配路由,默认返回404
        handler = routes.get(self.path, self.handle_404)
        handler()

    def handle_hello_world(self):
        self.send_response(200)
        self.send_header('Content-type', 'text/plain; charset=utf-8')
        self.end_headers()
        self.wfile.write(b'Hello World')

    def handle_greet(self):
        self.send_response(200)
        self.send_header('Content-type', 'text/plain; charset=utf-8')
        self.end_headers()
        self.wfile.write(b'Hello from greet endpoint!')

    def handle_status(self):
        self.send_response(200)
        self.send_header('Content-type', 'application/json; charset=utf-8')
        self.end_headers()
        self.wfile.write(b'{"status": "ok"}')

    def handle_404(self):
        self.send_response(404)
        self.send_header('Content-type', 'text/plain; charset=utf-8')
        self.end_headers()
        self.wfile.write(b'404 Not Found')

内容的提问来源于stack exchange,提问作者DeKrypt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 14:37:12