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

2024-05-12 12:45:39 发布

您现在位置:Python中文网/ 问答频道 /正文

今天,我发现自己需要一个简单的HTTP服务器,它可以记录/打印出它知道的关于请求的所有信息,并用一些虚假的应答(用于调试)。令人惊讶的是,我找不到任何可读即用的工具——我是不是遗漏了什么?在

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

我需要它在本地运行。在


Tags: 模块工具方法服务器信息http记录simplehttpserver
3条回答

从google上的一些快速搜索来看,最简单的方法是subcass SimpleHttpServer并记录您想看到的任何内容。在

这很容易

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返回您想要的任何“伪”回复。在

Turq在这种情况下效果很好。它是用Python编写的,使用简单,但又广泛、灵活,甚至有一个GUI。Turq的开发者这样描述它:

Turq is a small HTTP server that can be scripted in a Python-based language. Use it to set up mock HTTP resources that respond with the status, headers, and body of your choosing. Turq is designed for quick interactive testing, but can be used in automated scenarios as well.

它还有good documentation。在

注意:虽然Turq非常有用,但是它的作者已经停止了对它的维护,而是建议使用mitmproxy;mitmproxy也有一个pythonapi。在

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

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

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

相关问题 更多 >