云计算百科
云计算领域专业知识百科平台

Python实现一个简单的 HTTP echo 服务器

一个用来做测试的简单的 HTTP echo 服务器。

from http.server import HTTPServer, BaseHTTPRequestHandler
import json

class EchoHandler(BaseHTTPRequestHandler):
def do_GET(self):
# 构造响应数据
response_data = {
'path': self.path,
'method': 'GET',
'headers': dict(self.headers),
'query_string': self.path.split('?')[1] if '?' in self.path else ''
}

# 设置响应头
self.send_response(200)
self.send_header('Content-Type', 'application/json')
self.end_headers()

# 发送响应
self.wfile.write(json.dumps(response_data, indent=2).encode())

def do_POST(self):
# 获取请求体长度
content_length = int(self.headers.get('Content-Length', 0))
# 读取请求体
body = self.rfile.read(content_length).decode()

# 构造响应数据
response_data = {
'path': self.path,
'method': 'POST',
'headers': dict(self.headers),
'body': body
}

# 设置响应头
self.send_response(200)
self.send_header('Content-Type', 'application/json')
self.end_headers()

# 发送响应
self.wfile.write(json.dumps(response_data, indent=2).encode())

def run_server(port=8000):
server_address = ('', port)
httpd = HTTPServer(server_address, EchoHandler)
print(f'Starting server on port {port}…')
httpd.serve_forever()

if __name__ == '__main__':
run_server()

这个 HTTP echo 服务器的特点:

  • 支持 GET 和 POST 请求
  • 返回 JSON 格式的响应
  • 对于 GET 请求,会返回:
    • 请求路径
    • 请求方法
    • 请求头
    • 查询字符串
  • 对于 POST 请求,额外返回请求体内容
  • 使用方法:

  • 运行脚本启动服务器
  • 使用浏览器或 curl 访问 http://localhost:8000
  • 测试示例:

    # GET 请求
    curl http://localhost:8000/test?foo=bar

    # POST 请求
    curl -X POST -d "hello=world" http://localhost:8000/test

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » Python实现一个简单的 HTTP echo 服务器
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!