degordian/yii2-webhooks

Yii2 的 webhook 扩展

安装次数: 6,340

依赖者: 0

推荐者: 0

安全性: 0

星标: 9

关注者: 18

分支: 5

开放性问题: 4

类型:yii2-extension

1.0.1 2018-12-19 08:52 UTC

This package is not auto-updated.

Last update: 2024-09-18 11:36:07 UTC


README

为 yii2 创建和使用 webhook 的扩展。

描述

添加 webhook 并将其附加到 ActiveRecord 对象的事件上,以触发对外部系统(第三方服务、您自己的应用程序等)的 HTTP 请求。

用例示例

假设在您的项目中有一个扩展 ActiveRecordExample 类。

如果您希望在创建新的 Example 记录时触发 webhook,则创建一个新的 Webhook 记录,并将其分配给您的 Example 类。

您通过将 Webhook 记录的 event 属性设置为 app\models\Example::EVENT_AFTER_CREATE 的值来实现这一点。您还设置 webhook 的 urlmethod 值。例如 http://api.service.comPOST

现在,每当在您的项目中创建新的 Example 记录时,您的 API 服务将收到一个包含 Example 对象属性的 HTTP 请求。

安装

安装此扩展的首选方法是通过 composer

运行 composer 安装。

composer require --prefer-dist degordian/yii2-webhooks "dev-master"

配置

运行迁移。它创建 webhookwebhook_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

待定

屏幕截图

Image of webhook index page

Image of webhook-log index page

贡献

您的本地设置应该有此存储库和现有的 yii2 项目(最好是干净的 yii2 模板)。

通过将存储库添加到您的项目中的 composer.json 文件来链接它

"repositories": [
    {
        "type": "path",
        "url": "../yii2-webhooks"
    }
]

使用 composer 在项目中安装它

composer require --prefer-dist degordian/yii2-webhooks "*"

您可以直接在 vendor 文件夹中编辑项目中的文件,这要方便得多。

致谢

此扩展由 Bornfight 创建和维护。

许可

待定