0

我想在不事先知道它们是什么的情况下将服务集合加载到我的前端。我假设我可以在服务器上设置挂钩,只需遍历服务目录并确定服务(子目录名称)并将此信息传回。事实上,作为app.configure(services)调用的结果,信息应该在应用程序实例中吗?

在使用 a 之前,我已经完成了此操作get,该特殊功能_id会被钩住并返回集合记录以外的其他信息。我的问题是,在不知道服务名称的情况下,我如何形成一个被钩住的featherjs 服务器的套接字请求(例如get)。我想我总是可以拥有至少一个已知的服务(例如users),我可以添加那个钩子,但只是想知道是否有办法做我想做的事(在不知道任何服务名称的情况下找出)。

看起来有应用程序级别的钩子https://docs.feathersjs.com/api/application.html#hookshooks那么我如何通过套接字客户端调用其中一个并将结果返回到客户端。

恕我直言,这应该是客户端 api 的一部分。这将避免服务名称的硬编码或必须将它们放入客户端的一些自定义构建配置文件中。

4

1 回答 1

1

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

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

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

    return { services };
  }
});

现在转到根级别 ( /) 将列出所有可用服务的名称。您可能还想确保相应地保护呼叫,以便不是每个人都可以知道他们可以攻击的所有端点。

于 2018-12-28T06:05:10.820 回答