对aliveness-test的RabbitMQ HTTP API调用返回404,但其他调用有效

时间:2012-11-05 17:55:14

标签: httprequest rabbitmq

使用HTTP API时,我试图调用aliveness-test进行监视。目前我正在使用curl和以下命令进行测试:

 curl -i http://guest:guest@localhost:55672/api/aliveness-test/

我收到以下回复:

HTTP/1.1 404 Object Not Found
Server: MochiWeb/1.1 WebMachine/1.9.0 (someone had painted it blue)
Date: Mon, 05 Nov 2012 17:18:58 GMT
Content-Type: text/html
Content-Length: 193

<HTML><HEAD><TITLE>404 Not Found</TITLE></HEAD><BODY><H1>Not Found</H1>The requested document was not found on this server.<P><HR><ADDRESS>mochiweb+webmachine web server</ADDRESS></BODY></HTML>

当发出请求只是为了列出用户或vhost时,请求成功返回:

$ curl -I http://guest:guest@localhost:55672/api/users

HTTP/1.1 200 OK
Server: MochiWeb/1.1 WebMachine/1.9.0 (someone had painted it blue)
Date: Mon, 05 Nov 2012 17:51:44 GMT
Content-Type: application/json
Content-Length: 11210
Cache-Control: no-cache

我正在使用RabbitMQ的最新稳定版本(2.8.7),并且显然已经为API安装了管理插件来处理用户调用(由于它包含公司数据但是只是常规的JSON如预期的那样。)

互联网上没有太多关于这个电话失败的消息,所以我想知道是否有人之前看过这个电话?

谢谢, 克里斯蒂安

1 个答案:

答案 0 :(得分:38)

事实证明,即使作为URL的一部分,vhosts名称开头的'/'也不是隐含的。为了实现这一点,我只是改变了我的请求:

curl -i http://guest:guest@localhost:55672/api/aliveness-test/

curl -i http://guest:guest@localhost:55672/api/aliveness-test/%2F

由于%2F是'/'HTTP编码,我的请求现在查询名为'/'的vhost并返回200响应,如下所示:

{"status":"ok"}