无法将用户添加到 RabbitMQ 中的默认虚拟主机

问题描述 投票:0回答:1

我想使用 REST API 将用户添加到 RabbitMQ 中的默认

/
虚拟主机。

我正在执行以下端点:

PUT http://localhost:15672/api/permissions/%2F/user.name
我得到:

400 Bad Request: "{"error":"bad_request","reason":"vhost_or_user_not_found"}"

%2F
编码为默认虚拟主机名:
/

虚拟主机

/
存在于RabbitMQ中:

enter image description here

这也很有趣,因为当我执行相同的端点但使用不同的虚拟主机名时,它可以工作:

http://localhost:15672/api/permissions/ble/user.name

你有什么想法吗?

谢谢你。

rabbitmq virtualhost
1个回答
0
投票

问题在于

RestTemplate
正在对您的网址进行编码。这意味着发送请求时%2F将被进一步编码,使其无法被rabbitMQ识别。

为了避免这种情况,您可以使用

DefaultUriBuilderFactory
强制
RestTemplate
不对网址进行编码。

DefaultUriBuilderFactory uriBuilderFactory = new DefaultUriBuilderFactory();
uriBuilderFactory.setEncodingMode(DefaultUriBuilderFactory.EncodingMode.NONE);
restTemplate.setUriTemplateHandler(uriBuilderFactory);

restTemplate.exchange(
  rabbitBaseUrl + "/api/permissions/%2F/" + username,
  HttpMethod.PUT,
  new HttpEntity<>(permissionsObjectNode, headers),
  Void.class
);
© www.soinside.com 2019 - 2024. All rights reserved.