degordian / yii2-webhooks
Yii2 的 webhook 扩展
Requires
- yiisoft/yii2: ^2.0@dev
- yiisoft/yii2-httpclient: ~2.0.0
Requires (Dev)
- codeception/codeception: 2.5.x-dev
This package is not auto-updated.
Last update: 2024-09-18 11:36:07 UTC
README
为 yii2 创建和使用 webhook 的扩展。
描述
添加 webhook 并将其附加到 ActiveRecord
对象的事件上,以触发对外部系统(第三方服务、您自己的应用程序等)的 HTTP 请求。
用例示例
假设在您的项目中有一个扩展 ActiveRecord
的 Example
类。
如果您希望在创建新的 Example
记录时触发 webhook,则创建一个新的 Webhook
记录,并将其分配给您的 Example
类。
您通过将 Webhook
记录的 event
属性设置为 app\models\Example::EVENT_AFTER_CREATE
的值来实现这一点。您还设置 webhook 的 url
和 method
值。例如 http://api.service.com
和 POST
。
现在,每当在您的项目中创建新的 Example
记录时,您的 API 服务将收到一个包含 Example
对象属性的 HTTP 请求。
安装
安装此扩展的首选方法是通过 composer。
运行 composer 安装。
composer require --prefer-dist degordian/yii2-webhooks "dev-master"
配置
运行迁移。它创建 webhook 和 webhook_log 表。
php yii migrate --migrationPath=@degordian/webhooks/migrations
扩展需要启动
'bootstrap' => [ // ... 'webhooks' ],
将模块添加到配置中
'modules' => [ // ... 'webhooks' => [ 'class' => 'degordian\webhooks\Module', ], ],
使用
Webhook
通过导航到 webhooks 模块创建一个新的 webhook:index.php?r=webhooks/webhook/create
您可以使用来自 BaseActiveRecord
类的预定义事件,例如 EVENT_AFTER_INSERT
,或者您可以使用您自己的事件,例如 app\models\Example::EVENT_EXAMPLE
。
用户生成的事件
在触发自定义事件时,确保您像以下代码中那样 发送实例化模型
Event::trigger(Example::class, Example::EVENT_EXAMPLE, new Event(['sender' => $model]));
日志记录器
扩展记录每个触发的 webhook 及其 HTTP 请求和响应。
日志可在 index.php/webhooks?r=/webhook-log/index
上找到
实现自己的 EventDispatcher
您可以为满足您需求而添加自己的事件调度器实现。它必须实现 EventDispatcherInterface
。
需要相应地更新配置
'modules' => [ // ... 'webhooks' => [ 'class' => 'degordian\webhooks\Module', 'eventDispatcherComponentClass' => 'app\components\MyDispatcher', ], ],
实现自己的 Webhook
待定
屏幕截图
贡献
您的本地设置应该有此存储库和现有的 yii2 项目(最好是干净的 yii2 模板)。
通过将存储库添加到您的项目中的 composer.json
文件来链接它
"repositories": [
{
"type": "path",
"url": "../yii2-webhooks"
}
]
使用 composer 在项目中安装它
composer require --prefer-dist degordian/yii2-webhooks "*"
您可以直接在 vendor
文件夹中编辑项目中的文件,这要方便得多。
致谢
此扩展由 Bornfight 创建和维护。
许可
待定