Feathers: 公共/私人服务

创建于 2017-10-08  ·  4评论  ·  资料来源: feathersjs/feathers

大家好! 首先,我最近发现了feathersjs,不得不说它真的很好用。
我们可以通过 rest 或 socket 公开服务的方式真的很棒。
我正在使用它为 React 前端构建 REST api,但我仍然对一些事情感到困惑。

我不知道把我的“私人”服务放在哪里。 例如,我有一个邮件服务,使用翻译服务向用户发送翻译后的电子邮件(当他们注册时,忘记密码,......)。 此服务永远不会与其余 api 一起公开,它纯粹是一个内部服务。 当然,用户永远无法通过向 /mailer 发送 POST 来发送电子邮件。 但是,似乎我需要将我的服务附加到路由,并且服务公开是默认行为。 要禁用对我的服务的“外部”访问,我必须在我的服务挂钩之前在所有方法上使用 hooks.disallow('external') 之类的挂钩,对吗? 我是否遗漏了什么,或者我们是否有更简单的方法来定义私有服务? 我也不喜欢将我的所有服务(私有和公共)放在同一个文件夹(src/services)中。 我应该以完全不同的方式定义这种“私人服务”吗? 就像,只是像这样 app.set('mailer', mailer) 那样将它们添加到应用程序中并失去服务挂钩的好处。 我们可以将应用程序用作服务容器吗?推荐的将服务注入其他服务的方法是什么? 从应用程序中获取它们? 喜欢 app.service('xxx') 吗?
此外,在使用 cli 并生成服务时。 每个服务都有一个名称选项。 这个名字有什么用? 当我们调用 app.service(xxx) 时,它是通过服务附加到路径 xxx 来解析的,对吗?

谢谢 !

最有用的评论

你现在可以在feathers-plus/feathers-hooks-common#disallow找到这些。

所有4条评论

要禁用对我的服务的“外部”访问,我必须使用 hooks.disallow('external') 之类的钩子

是的,你应该使用类似的东西:

app.use('/mypath', myservice)
app.service('/mypath').hooks({
  before: { all: [hooks.disallow('external')] } 
})

我应该以完全不同的方式定义这种“私人服务”吗?

我的建议是拥有一个私有命名空间,然后使用全局钩子。 每当您想要私人服务时,只需将它们命名/private/svc1 /private/svc2 ,然后创建一个有条件地应用disallow('external')的全局应用程序挂钩。

您可以随意保留文件夹结构,重要的是服务名称。 但我两者都做。 就像我所有的数据库服务都在一个数据库文件夹中一样,我也像这样命名空间db/users ...


就像,只是像这样 app.set('mailer', mailer) 那样将它们添加到应用程序中并失去服务挂钩的好处。

不是个好主意。 继续坚持app.use()


我们可以将应用程序用作服务容器吗?推荐的将服务注入其他服务的方法是什么? 从应用程序中获取它们? 喜欢 app.service('xxx') 吗?

推荐的方式,我也坚持,是使用 ES6 类作为服务,在这种情况下,你会得到一个提供app对象的设置方法。

export default class Service {
 setup(app) {
    this.app = app;
    this.svc2 = app.service('svc2');
  }

  create(data) {
    // use this.svc2 here now 
  }
}

app.use('/service', new Service());

此外,在使用 cli 并生成服务时。 每个服务都有一个名称选项。 这个名字有什么用? 当我们调用 app.service(xxx) 时,它是通过服务附加到路径 xxx 来解析的,对吗?

我不在我的项目中使用 cli,因为它更像是从 express 的迁移而不是一个新的迁移。 所以我不完全确定这方面。 但是是的,当我们调用app.service('xyz') ,它会通过您在添加服务app.use('xyz', new Xyz())时定义的路径来解析它们

谢谢@subodhpareek18 ,就是这样😄

你现在可以在feathers-plus/feathers-hooks-common#disallow找到这些。

此问题已自动锁定,因为它关闭后没有任何近期活动。 请打开一个新问题,并提供指向此问题的链接以获取相关错误。

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

andysay picture andysay  ·  3评论

arkenstan picture arkenstan  ·  3评论

NetOperatorWibby picture NetOperatorWibby  ·  4评论

Mattchewone picture Mattchewone  ·  4评论

corymsmith picture corymsmith  ·  4评论