Python如何实现 HTTP echo 服务器

 更新时间:2025年01月06日 11:36:44   作者:Toormi  
本文介绍了如何使用Python实现一个简单的HTTPecho服务器,该服务器支持GET和POST请求,并返回JSON格式的响应,GET请求返回请求路径、方法、头和查询字符串,POST请求还返回请求体内容,服务器的使用方法和测试示例也一并提供,感兴趣的朋友跟随小编一起看看吧

一个用来做测试的简单的 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

到此这篇关于Python实现一个简单的 HTTP echo 服务器的文章就介绍到这了,更多相关Python HTTP echo 服务器内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python判断Nan值的五种方式小结

    Python判断Nan值的五种方式小结

    这篇文章主要介绍了Python判断Nan值的五种方式小结,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • python使用js2py库运行js代码

    python使用js2py库运行js代码

    本文主要介绍了thon使用js2py库运行js代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-05-05
  • 十个常见的Python脚本详细介绍及代码举例

    十个常见的Python脚本详细介绍及代码举例

    这篇文章主要给大家介绍了十个常见的Python脚本的相关资料,包括批量重命名文件、下载网页图片、发送邮件通知、读取和写入CSV文件、爬取网页数据、自动化测试、图像处理、数据可视化以及创建简单的Web应用,需要的朋友可以参考下
    2024-11-11
  • python类和继承用法实例

    python类和继承用法实例

    这篇文章主要介绍了python类和继承用法,实例分析了Python类的定义与继承的实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • 在pycharm中debug 实时查看数据操作(交互式)

    在pycharm中debug 实时查看数据操作(交互式)

    这篇文章主要介绍了在pycharm中debug 实时查看数据操作(交互式),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • python实现多线程抓取知乎用户

    python实现多线程抓取知乎用户

    本文给大家分享的是如何使用Python实现多线程抓取知乎用户的思路以及代码,非常的详细,作者使用本程序成功抓取到了百万用户,有需要的小伙伴可以参考下
    2016-12-12
  • Python中的getter与setter及deleter使用示例讲解

    Python中的getter与setter及deleter使用示例讲解

    这篇文章主要介绍了Python中的getter与setter及deleter使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2023-01-01
  • 通过python封装SQLite3的示例代码

    通过python封装SQLite3的示例代码

    这篇文章主要介绍了使用 Python 封装 SQLite3 的相关内容,包括创建数据库实例、创建表、各种插入(单个、批量、字典等)、删除(按条件、按 ID 等)、修改(多种方式)、查询(单条、多条、分页等)的示例及对应的实现代码,需要的朋友可以参考下
    2024-11-11
  • 分享6 个值得收藏的 Python 代码

    分享6 个值得收藏的 Python 代码

    这篇文章主要分享了6 个值得收藏的 Python 代码,希望队长正在学习的你有所帮助,需要的小伙伴也可以参考一下
    2022-01-01
  • python模拟点击在ios中实现的实例讲解

    python模拟点击在ios中实现的实例讲解

    在本篇文章里小编给大家整理的是一篇关于python模拟点击在ios中实现的实例讲解内容,有需要的朋友们可以参考下。
    2020-11-11

最新评论