13

HTTP API を使用している場合、監視目的でアライブネス テストを呼び出そうとしています。現在、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>

ユーザーまたは仮想ホストをリストするためだけにリクエストを行うと、リクエストは正常に返されます。

$ 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です) )。

この呼び出しが失敗したことについてインターネット上にはあまりないので、誰かがこれを以前に見たことがあるかどうか疑問に思っていますか?

ありがとう、クリスチャン

4

1 に答える 1

44

仮想ホスト名の先頭にある「/」は、URL の一部であっても暗黙的ではないことが判明しました。これを機能させるために、リクエストを次のように変更しました。

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"}
于 2012-11-06T10:45:21.583 に答える