【问题标题】:Is there a ready-made HTTP server for debugging purposes?是否有现成的 HTTP 服务器用于调试目的?
【发布时间】:2019-07-07 16:46:45
【问题描述】:

今天我发现自己需要一个简单的 HTTP 服务器,它可以记录/打印出它所知道的有关请求的所有信息,并以一些虚拟回复(用于调试)进行响应。令人惊讶的是,我找不到任何用于读取的工具 - 我错过了什么吗?

Python 的 SimpleHTTPServer 模块看起来很有前途,也许有一种非常快速的方法可以使用它转储整个请求?

我需要它在本地运行。

【问题讨论】:

    标签: python http network-protocols


    【解决方案1】:

    从谷歌上的一些快速搜索看来,最简单的方法是子类化 SimpleHttpServer 并记录你想看到的任何内容。

    这个looks很容易

    class ServerHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
    
        def do_GET(self):
            logging.error(self.headers)
            # whatever else you would like to log here
            SimpleHTTPServer.SimpleHTTPRequestHandler.do_GET(self)
    
    Handler = ServerHandler
    
    httpd = SocketServer.TCPServer(("", PORT), Handler)
    
    print "serving at port", PORT
    httpd.serve_forever()
    

    此外,您还可以让您的 do_GETdo_POST 返回您想要的任何“虚拟”回复。

    【讨论】:

    • 是否有适用于所有类型请求的通用方法?
    • $ /usr/bin/python3 -m http.server
    【解决方案2】:
    ruby -r sinatra -e "get('/') { puts params.inspect }"
    

    文档:http://www.sinatrarb.com

    Ruby 简单而灵活,它允许您快速模拟任何回复。

    【讨论】:

    • --用 ruby​​ 回答一个 python 问题。-- Wat?
    【解决方案3】:

    Turq 适用于这种目的。它是用 Python 编写的,使用简单但广泛、灵活,甚至还有一个 GUI。 Turq 的开发者是这样描述它的:

    Turq 是一个小型 HTTP 服务器,可以在基于 Python 的脚本中编写 语。使用它来设置响应的模拟 HTTP 资源 您选择的状态、标题和正文。 Turq 专为快速 交互式测试,但也可用于自动化场景。

    它还有good documentation

    警告:虽然 Turq 非常有用,但它的作者已经停止维护它,而是推荐 mitmproxy; mitmproxy 也有 Python API。

    【讨论】:

      【解决方案4】:

      您好,看看 github 上的 ReturnToSender,它是一个在本地运行的模拟 http 服务器。不是网络托管的。使用您的模拟数据响应 http 客户端并显示客户端请求详细信息。

      https://github.com/stephenhealey86/ReturnToSender

      支持 GET、POST、PUT、PATCH、DELETE 请求类型和 JSON、TEXT、JavaScript、XML、HTML 内容类型。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-08-24
        • 2012-08-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-08-16
        相关资源
        最近更新 更多