首页 > 解决方案 > MongooseIm Rest API 与本地设置的连接问题

问题描述

我已经设置了 mongooseim [3.3.0] ubuntu 14.04 并且它与 android 客户端设置完美配合。然后我需要测试用于创建房间的 REST API,然后在运行 swagger 文档时出现此错误。

curl -X GET --header 'Accept: application/json' --header 'Authorization: Basic dXNlcjpwYXNzd29yZA==' 'http://localhost:8089/api/rooms'

curl: (52) Empty reply from server

这是与 REST API 相关的 mongooseim 配置。

{ 8089 , ejabberd_cowboy, [
      {num_acceptors, 10},
      {transport_options, [{max_connections, 1024}]},
      {protocol_options, [{compress, true}]},
      {ssl, [{certfile, "priv/ssl/fake_cert.pem"}, {keyfile, "priv/ssl/fake_key.pem"}, {password, ""}]},
      {modules, [
          {"_", "/api/sse", lasse_handler, [mongoose_client_api_sse]},
          {"_", "/api/messages/[:with]", mongoose_client_api_messages, []},
          {"_", "/api/contacts/[:jid]", mongoose_client_api_contacts, []},
          {"_", "/api/rooms/[:id]",    mongoose_client_api_rooms, []},
          {"_", "/api/rooms/[:id]/config",    mongoose_client_api_rooms_config, []},
          {"_", "/api/rooms/:id/users/[:user]",    mongoose_client_api_rooms_users, []},
          {"_", "/api/rooms/[:id]/messages",    mongoose_client_api_rooms_messages, []}
      ]}
  ]}

这是我提到的招摇文件。https://mongooseim.readthedocs.io/en/3.3.0/swagger/index.html

标签: apirestcurlswaggermongoose-im

解决方案


我注意到以下几点:

  1. 您提供的curl示例尝试通过 HTTP 将请求发送到 MongooseIM
  2. 根据您提供的配置文件部分,我可以看到 MongooseIM 需要 HTTP S流量。

看起来将curl命令中的端点更改为https://localhost:8089/api/rooms会有所帮助。当然,如果您在运行 MongooseIM 的同一台机器上运行该命令。否则,请将 更改localhost为正确的机器名称或 IP 地址。

更重要的是,在配置文件中,我可以看到 REST API 配置了默认的、假的和自签名的证书。我强烈建议您将其更改为真正的证书。为了测试,您需要在命令中添加选项以跳过证书验证-kcurl


推荐阅读