是否有现成的HTTP服务器用于调试目的?

时间:2012-10-08 16:35:23

标签: python http network-protocols

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

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

我需要它在本地运行。

4 个答案:

答案 0 :(得分:7)

通过Google上的一些快速搜索,看起来最简单的方法就是升级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返回您想要的任何'虚拟'回复。

答案 1 :(得分:5)

ruby -r sinatra -e "get('/') { puts params.inspect }"

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

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

答案 2 :(得分:0)

Turq可以很好地达到这种目的。它是用Python编写的,使用简单却又广泛,灵活,甚至具有GUI。 Turq的开发人员对此进行了描述:

  

Turq是可以在基于Python的脚本中编写脚本的小型HTTP服务器   语言。使用它来设置模拟HTTP资源,以响应   状态,标题和所选内容。 Turq专为快速而设计   交互式测试,但也可以在自动化方案中使用。

它也有good documentation

注意:尽管Turq非常有用,但它的作者已停止对其进行维护,建议使用mitmproxy; mitmproxy也有Python API。

答案 3 :(得分:-1)

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

https://github.com/stephenhealey86/ReturnToSender

支持GET,POST,PUT,PATCH,DELETE请求类型以及JSON,TEXT,JavaScript,XML,HTML内容类型。