在两个或多个插件之间共享服务
Share a service between two or more plugins
我需要在两个(或更多)插件之间共享支付服务 class,我想知道 Kuzzle 的 Pipes 是否是最好的解决方案?
我制作了一个似乎有效的 poc,但是,我没有在 kuzzle 的插件上找到任何类似的例子(比如 Kuzzle-plugin-logger 的钩子)
还有哪些选择?
在插件之间共享功能的最佳方式是将它们声明为 API 操作。
例如,您可以通过创建一个名为 payment
的插件并在其中声明一个 controller 来公开您的支付服务功能。
this.controllers = {
card: {
pay: request => ...,
fraudCheck: request => ...
}
};
然后您可以使用 embedded SDK 从另一个插件调用这些操作。请求将直接传输到 Kuzzle,无需使用网络。
this.context.accessors.sdk.query({
controller: 'payment/card',
action: pay,
number: '...',
ccv: 543,
...
});
由于 Kuzzle 权限是 whitelist based,因此除非您在他们的角色中明确指定,否则外部用户将无法调用您的操作。
我需要在两个(或更多)插件之间共享支付服务 class,我想知道 Kuzzle 的 Pipes 是否是最好的解决方案?
我制作了一个似乎有效的 poc,但是,我没有在 kuzzle 的插件上找到任何类似的例子(比如 Kuzzle-plugin-logger 的钩子)
还有哪些选择?
在插件之间共享功能的最佳方式是将它们声明为 API 操作。
例如,您可以通过创建一个名为 payment
的插件并在其中声明一个 controller 来公开您的支付服务功能。
this.controllers = {
card: {
pay: request => ...,
fraudCheck: request => ...
}
};
然后您可以使用 embedded SDK 从另一个插件调用这些操作。请求将直接传输到 Kuzzle,无需使用网络。
this.context.accessors.sdk.query({
controller: 'payment/card',
action: pay,
number: '...',
ccv: 543,
...
});
由于 Kuzzle 权限是 whitelist based,因此除非您在他们的角色中明确指定,否则外部用户将无法调用您的操作。