如何在没有restful的情况下使用feathersjs声明内部服务?

How to use feathersjs to declare internal services without restful?

FeathersJS 提供了一种在 nodejs 之上创建 restful API 的好方法。但是我还没有想出一种方法来创建在我的应用程序内部使用的服务,而无需 restful。

下面是一个代码示例:

const myService = {
  find(params [, callback]) {},
  get(id, params [, callback]) {},
  create(data, params [, callback]) {},
  update(id, data, params [, callback]) {},
  patch(id, data, params [, callback]) {},
  remove(id, params [, callback]) {},
  setup(app, path) {}
}

app.use('/my-service', myService);

在其他服务中,他们可以使用 app.service('/my-service') 来引用该服务实例。但它还在 myService 实例上公开了一个 restful API。如何在不公开的情况下创建服务?我只想在我的应用程序中使用该服务。

您可以使用带有 external(或 restsocketio)参数的 disallow 挂钩来禁用外部访问:

const { disallow } = require('feathers-hooks-common');
const myService = {
  async find(params) {},
  async get(id, params) {},
  async create(data, params) {},
  async update(id, data, params) {},
  async patch(id, data, params) {},
  async remove(id, params) {},
  setup(app, path) {}
}

app.use('/my-service', myService);

app.service('my-service').hooks({
  before: disallow('external')
});