如何使用vhost“/"进行RabbitMQ API调用?

7xzttuei  于 2023-10-20  发布在  RabbitMQ
关注(0)|答案(2)|浏览(197)

以下API调用RabbitMQ:

http -a USER:PASS localhost:15001/api/queues/

返回队列列表:

[
    {
         ...
         "messages_unacknowledged_ram": 0,
         "name": "foo_queue",
         "node": "rabbit@queue-monster-01",
         "policy": "",
         "state": "running",
         "vhost": "/"
     },
     ...
]

请注意,vhost参数是/

如何使用/vhost进行/api/queues/vhost/name调用,该调用返回特定队列的详细信息?

我试过:

  • localhost:15001/api/queues/\//foo_queue
  • localhost:15001/api/queues///foo_queue

但两者都失败了404 Object Not Found

44u64gxh

44u64gxh1#

URL Encoding做了这个把戏。URL应该是:

localhost:15001/api/queues/%2F/foo_queue
                           ⬆⬆⬆

我认为REST资源不应该命名为/,特别是在默认情况下。

ckocjqey

ckocjqey2#

以原始答案(未找到)回答Avishake的问题。
你得到Not Found的原因是因为你应该用base替换**%2F**。Unicode编码是错误的方法。
请注意,当您查询所有队列时,vhost参数是/。

[
    {
         ...
         "messages_unacknowledged_ram": 0,
         "name": "q.somequeue",
         "node": "rabbit@queue-monster-01",
         "policy": "",
         "state": "running",
         "vhost": "/"
     },
     ...
    ]

如果你用%2F替换/(unicode方法),你将无法找到。通过将/替换为base(非unicode方法),您将获得成功的响应。

错误:http://RabbitMQHost:port/api/sources/%2F/q. somequeue
正确http://RabbitMQHost:port/api/sources/base/q. somequeue

相关问题