doohlabs / yii2-webhooks
Yii2 扩展,用于处理 webhooks
Requires
- php: >=7.1.0
- yiisoft/yii2: ^2.0@dev
- yiisoft/yii2-httpclient: ~2.0.0
Requires (Dev)
- codeception/codeception: 2.5.x-dev
README
用于在 yii2 中创建和使用 webhooks 的扩展。
描述
添加 webhooks 并将其附加到 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 doohlabs/yii2-webhooks "^1.0"
配置
运行迁移。它创建 webhook 和 webhook_log 表。
php yii migrate --migrationPath=@doohlabs/webhooks/migrations
扩展需要初始化
'bootstrap' => [ // ... 'webhooks' ],
将模块添加到配置中
'modules' => [ // ... 'webhooks' => [ 'class' => 'doohlabs\webhooks\Module', 'allowedModels' => [ 'app\models\Model1', 'app\models\Model2', ], 'allowedEvents' => [ 'EVENT_AFTER_DELETE', 'EVENT_AFTER_INSERT', 'EVENT_AFTER_UPDATE', ], 'timeout' => 30, ], ],
用法
Webhooks
通过导航到 webhooks 模块创建新的 webhook:index.php?r=webhooks/webhook/create
您可以使用来自 BaseActiveRecord
类的预定义事件,例如 EVENT_AFTER_INSERT
,或者您可以使用您自己的事件,例如 app\models\Example::EVENT_EXAMPLE
。
模型必须实现 \doohlabs\webhooks\interfaces\WebhookModelInterface。
用户生成的事件
在触发您自定义事件时,请确保您像以下代码一样 发送实例化模型
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' => 'doohlabs\webhooks\Module', 'eventDispatcherComponentClass' => 'app\components\MyDispatcher', ], ],
实现您自己的 Webhook
待定
屏幕截图
贡献
您的本地设置应包含此存储库和现有的 yii2 项目(最好是干净的 yii2 模板)。
通过将其添加到项目的 composer.json
文件中,将存储库链接到您的项目
"repositories": [
{
"type": "path",
"url": "../yii2-webhooks"
}
]
使用 composer 在项目中安装它
composer require --prefer-dist doohlabs/yii2-webhooks "*"
您可以直接在项目中的 vendor
文件夹中编辑文件,这样更方便。
鸣谢
此扩展由 Doohlabs 维护。
原始扩展由 Bornfight 创建并维护。
许可证
MIT