feathersjs-如何远程检索可用服务

时间:2018-12-27 18:04:24

标签: feathersjs feathers-hook

我想将服务集合加载到我的前端而无需先验地了解它们是什么。我假设我可以在服务器上设置钩子,该钩子仅遍历服务目录并确定服务(子目录名称)并将此信息传递回去。实际上,由于app.configure(services)调用的结果,信息应该在应用实例中吗?

在使用带有特殊get的{​​{1}}和挂钩_id并返回除收集记录以外的其他信息之前,我已经完成了此操作。我的问题是,在不知道服务名称的情况下,如何形成被钩住的Featherjs服务器的套接字请求(如get)。我想我总是可以拥有至少一个已知的服务(例如users),我可以添加该钩子,但是只是想知道是否有一种方法可以做我想做的事情(发现时不知道任何服务名)。 / p>

似乎有应用程序级钩子https://docs.feathersjs.com/api/application.html#hookshooks,所以我该如何通过套接字客户端调用其中之一,并在客户端上返回结果。

恕我直言,这应该是客户端api的一部分。这样可以避免对服务名称进行硬编码,也不必将其放置在客户端的某些自定义构建配置文件中。

1 个答案:

答案 0 :(得分:0)

出于安全原因,默认情况下该功能不可用,因此应以特定于您的应用程序的方式返回客户端上所有服务的列表。

在服务器上,您可以通过app.services获取所有可用服务的对象,该对象可以通过custom service相当直接地提供给客户端:

app.use('/', {
  async find () {
    const services = Object.keys(app.services);

    return { services };
  }
});

现在转到根级别(/)将列出所有可用服务的名称。您可能还希望确保相应地确保呼叫的安全性,以使并非每个人都知道他们可以攻击的所有端点。