当前位置: 首页 > news >正文

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

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

from http.server import HTTPServer, BaseHTTPRequestHandler
import jsonclass 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 服务器的特点:

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

使用方法:

  1. 运行脚本启动服务器
  2. 使用浏览器或 curl 访问 http://localhost:8000

测试示例:

# GET 请求
curl http://localhost:8000/test?foo=bar# POST 请求
curl -X POST -d "hello=world" http://localhost:8000/test
http://www.lryc.cn/news/516024.html

相关文章:

  • Ruby 中文编码
  • 淘金优化算法的信息共享与更新机制改进
  • Python中的ast.literal_eval:安全地解析字符串为Python对象
  • 【AI数学基础】线性代数:内积和范数
  • Go语言的 的泛型(Generics)核心知识
  • C++vector
  • 如何配置【Docker镜像】加速器+【Docker镜像】的使用
  • Docker--Docker Network(网络)
  • Vue项目中生成node_modules文件夹的两种常用方法及npm优势
  • 如何在 Ubuntu 22.04 上安装 Cassandra NoSQL 数据库教程
  • leetcode 面试经典 150 题:轮转数组
  • 如何在 Mac 上轻松恢复语音备忘录
  • C++ 基础概念: 未定义行为(Undefined Behavior)
  • Rad Studio 11.3 Alexandria 3236a(DELPHI 11.3)官方ISO/百度云盘 下载地址
  • vue3-watchEffect异步依赖收集
  • 微信小程序中 “页面” 和 “非页面” 的区别
  • 【蓝桥杯】43709.机器人繁殖
  • 【机器学习】机器学习的基本分类-自监督学习(Self-supervised Learning)
  • R shiny app | 网页应用 空格分隔的文本文件在线转csv
  • 三天速成微服务
  • 【踩坑记录】uni-app 微信小程序调试不更新问题解决指南
  • 【Adobe Acrobat PDF】Acrobat failed to connect to a DDE server.是怎么回事?
  • PyTorch 中 coalesce() 函数详解与应用示例
  • ubuntu进行C++的调试
  • 【U8+】用友U8软件中,出入库流水输出excel的时候提示报表输出引擎错误。
  • NoSQL简介
  • XIAO Esp32 S3 网络摄像头——3音视频监控
  • 题目解析与代码实现:You‘re Given a String
  • Understanding the Lomb–Scargle Periodogram
  • 解决Linux切换用户后的命令提示符为-bashxx$的问题