有没有一个现成的HTTP服务器用于调试目的?

8
今天我发现自己需要一个简单的HTTP服务器,它可以记录/打印出关于请求的所有信息,并使用一些虚拟的回复(用于调试)。令人惊讶的是,我找不到任何可用的工具来实现这个目标——我错过了什么吗?
Python的SimpleHTTPServer模块看起来很有前途,也许有一种非常快速的方法可以使用它来转储整个请求?
我需要在本地运行它。
4个回答

8

从谷歌的一些快速搜索结果来看,最简单的方法是通过子类化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返回任何您想要的“虚拟”回复。

1
有没有一种通用的方法可以用于所有类型的请求? - Julio Marins
$ /usr/bin/python3 -m http.server - AAAfarmclub
1
答案中的代码已更新为Python3:https://gist.github.com/jwhb/de4225afba72328af443671177666ec5 - JWhy

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

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

Ruby简单灵活,可以快速模拟任何回复。


回答一个Python问题用Ruby?什么意思? - Fake Name

0

Turq非常适合这种目的。它是用Python编写的,易于使用且功能广泛、灵活,甚至还有一个图形用户界面。Turq的开发人员描述它如下:

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

它还有良好的文档

注意:虽然Turq非常有用,但其作者已停止维护,建议改用mitmproxy;mitmproxy也有Python API。


0

嗨,请看一下Github上的ReturnToSender,它是一个本地运行的模拟HTTP服务器,而不是Web托管。它可以响应HTTP客户端并显示客户端请求的详细信息以及您的模拟数据。

https://github.com/stephenhealey86/ReturnToSender

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接