我想将服务集合加载到我的前端而无需先验地了解它们是什么。我假设我可以在服务器上设置钩子,该钩子仅遍历服务目录并确定服务(子目录名称)并将此信息传递回去。实际上,由于app.configure(services)
调用的结果,信息应该在应用实例中吗?
在使用带有特殊get
的{{1}}和挂钩_id
并返回除收集记录以外的其他信息之前,我已经完成了此操作。我的问题是,在不知道服务名称的情况下,如何形成被钩住的Featherjs服务器的套接字请求(如get
)。我想我总是可以拥有至少一个已知的服务(例如users
),我可以添加该钩子,但是只是想知道是否有一种方法可以做我想做的事情(发现时不知道任何服务名)。 / p>
似乎有应用程序级钩子https://docs.feathersjs.com/api/application.html#hookshooks,所以我该如何通过套接字客户端调用其中之一,并在客户端上返回结果。
恕我直言,这应该是客户端api的一部分。这样可以避免对服务名称进行硬编码,也不必将其放置在客户端的某些自定义构建配置文件中。
答案 0 :(得分:0)
出于安全原因,默认情况下该功能不可用,因此应以特定于您的应用程序的方式返回客户端上所有服务的列表。
在服务器上,您可以通过app.services获取所有可用服务的对象,该对象可以通过custom service相当直接地提供给客户端:
app.use('/', {
async find () {
const services = Object.keys(app.services);
return { services };
}
});
现在转到根级别(/
)将列出所有可用服务的名称。您可能还希望确保相应地确保呼叫的安全性,以使并非每个人都知道他们可以攻击的所有端点。