【问题标题】:How to use feathersjs to declare internal services without restful?不用restful如何使用feathersjs声明内部服务?
【发布时间】:2018-03-23 23:44:24
【问题描述】:

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

以下是代码示例:

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。如何在不暴露的情况下创建服务?我只想在我的应用中使用该服务。

【问题讨论】:

    标签: node.js feathersjs


    【解决方案1】:

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

    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')
    });
    

    【讨论】:

    • 当我这样做时,我得到了这个错误“错误:'之前'不是一个有效的钩子方法”
    • @Daff 有没有办法查明服务是在内部调用还是在外部调用?
    • 是的,对于外部调用,params.provider 将设置为调用它的传输方式。
    • 对于任何尝试在最新版本的 Feathers 上执行此操作的人,您可以在此处找到一些指导:github.com/feathersjs/feathers/issues/688
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-06
    • 1970-01-01
    • 2021-06-13
    • 1970-01-01
    • 2012-04-27
    • 1970-01-01
    • 2018-02-08
    相关资源
    最近更新 更多