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

Python通用Echo API实现咨询:开源框架推荐与从零构建方案

关于Python实现Echo API的问题解答

1. 可用的开源工具/框架

有现成工具直接满足需求:httpbin。它的/anything端点支持任意HTTP方法和任意路径后缀,会以JSON格式返回请求的所有细节,包括请求方法、完整URL、查询参数、请求头、请求体等内容。启动服务后,访问http://localhost:8000/anything/后跟任意路径,就能得到符合要求的echo响应。

2. 从零构建的最佳方式

如果不想用第三方工具,直接用Python标准库的http.server和json模块即可,无需额外依赖。核心思路是重写BaseHTTPRequestHandler类,统一捕获所有请求并提取关键信息,最终返回JSON格式响应:

from http.server import BaseHTTPRequestHandler, HTTPServer
import json
from urllib.parse import urlparse, parse_qs

class EchoHandler(BaseHTTPRequestHandler):
    def _send_json_response(self, data):
        self.send_response(200)
        self.send_header('Content-Type', 'application/json')
        self.end_headers()
        self.wfile.write(json.dumps(data, indent=2).encode('utf-8'))

    # 为所有HTTP方法绑定统一处理逻辑
    def do_GET(self):
        self._handle_all_methods()
    def do_POST(self):
        self._handle_all_methods()
    def do_PUT(self):
        self._handle_all_methods()
    def do_DELETE(self):
        self._handle_all_methods()
    def do_PATCH(self):
        self._handle_all_methods()
    def do_OPTIONS(self):
        self._handle_all_methods()

    def _handle_all_methods(self):
        # 解析URL与查询参数
        parsed_url = urlparse(self.path)
        query_params = parse_qs(parsed_url.query)
        
        # 读取请求体内容
        content_length = int(self.headers.get('Content-Length', 0))
        request_body = self.rfile.read(content_length).decode('utf-8') if content_length > 0 else ''
        
        # 整理所有请求细节
        echo_data = {
            'method': self.command,
            'full_path': self.path,
            'host': self.headers.get('Host'),
            'query_parameters': query_params,
            'request_headers': dict(self.headers),
            'request_body': request_body
        }
        
        self._send_json_response(echo_data)

def run_server(port=9997):
    server_address = ('', port)
    httpd = HTTPServer(server_address, EchoHandler)
    print(f"Echo API服务已启动,监听端口 {port}")
    httpd.serve_forever()

if __name__ == '__main__':
    run_server()

这段代码启动的HTTP服务器支持所有常见HTTP方法,无论访问根路径后的任何子路径,都会返回包含请求全量细节的JSON响应,完全适配你的测试需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 01:01:11