minkbear / captainhook
为您的Laravel应用添加webhooks。
Requires
- php: >=5.4.0
- guzzlehttp/guzzle: ~6.0
- illuminate/support: ~5.0
Requires (Dev)
- illuminate/database: ~5.0
- illuminate/events: ~5.0
- mockery/mockery: ~0.9
- orchestra/testbench: ~3.0
- phpunit/phpunit: ~4.7 || ~5.0
- dev-master
- 3.4.4
- 3.4.3
- 3.4.2
- 3.4.1
- 3.4.0
- 3.3.1
- 3.3.0
- 3.2.1
- 3.2.0
- 3.1.3
- 3.1.2
- 3.1.1
- 3.1.0
- 3.0.0
- 2.2.0
- 2.1.4
- 2.1.3
- 2.1.2
- 2.1.1
- 2.1.0
- 2.0.0
- 1.0.4
- 1.0.3
- 1.0.2
- 1.0.1
- 1.0.0
- dev-analysis-zDyAy9
- dev-analysis-zGDLMg
- dev-analysis-q2QDlB
- dev-analysis-qvQGeN
- dev-analysis-qgO15w
- dev-analysis-z9mPL6
- dev-analysis-q1blmN
This package is auto-updated.
Last update: 2024-09-10 22:03:49 UTC
README
## Captain Hook ## 为您的Laravel应用添加Webhooks,哗啦啦使用Laravel事件系统将多个webhooks实现到您的Laravel应用中。
A webhook is a method of altering the behavior of a web application, with custom callbacks.
These callbacks may be managed by third-party users and developers who may not necessarily
be affiliated with the originating application.
示例
php artisan hook:add http://www.myapp.com/hooks/ '\App\Events\PodcastWasPurchased' php artisan hook:add http://www.myapp.com/hooks/ 'eloquent.saved: \App\User'
Webhook::create([ "url" => Input::get("url"), "event" => "\\App\\Events\\MyEvent", "tenant_id" => Auth::id() ]);
内容
## 安装为了将CaptainHook添加到项目中,只需将以下内容添加到您的composer.json
文件的require
块中:
"mpociot/captainhook": "~2.0"
然后运行composer install
或composer update
。
或者,如果您更喜欢,可以直接运行composer require mpociot/captainhook
。
然后,在您的config/app.php
中,将以下内容添加到providers
数组中:
Mpociot\CaptainHook\CaptainHookServiceProvider::class
发布并运行迁移以创建将保存所有已安装webhooks的"webhooks"表。
php artisan vendor:publish --provider="Mpociot\CaptainHook\CaptainHookServiceProvider" php artisan migrate
## 使用 CaptainHook服务提供程序监听任何eloquent.*
事件。
如果包找到了为事件配置的webhook,它将向指定的URL发出POST请求。
Webhook数据以JSON格式发送到POST请求正文中。事件对象完整地包含在内,并在解析JSON正文后可以直接使用。
示例
假设您想创建一个webhook,每次您的User模型被更新时都会调用它。
从Laravel调用的将是以下事件:
eloquent.updated: \App\User
因此,您要监听的就是这个事件。
### 添加新webhooks如果您知道您想监听哪个事件,您可以使用hook:add
artisan命令添加一个新的webhook。
此命令接受两个参数:
- 将接收POST请求的webhook URL
- 事件名称。这可以是
eloquent.*
事件之一,也可以是您的自定义事件之一。
php artisan hook:add http://www.myapp.com/hook/ 'eloquent.saved: \App\User'
您也可以为同一事件添加多个webhooks,因为所有配置的webhooks都会异步调用。
### 删除现有webhooks要从系统中删除现有的webhook,请使用hook:delete
命令。此命令接受webhook ID作为参数。
php artisan hook:delete 2### 列出所有活动webhooks
要列出所有现有的webhooks,请使用hook:list
命令。
它将以表格形式输出所有配置的webhooks。
### Spark按照安装部分所述安装此包,然后按照Spark安装说明进行操作。
### 自定义事件监听器所有监听器都在位于 config/captain_hook.php
的配置文件中定义。
要在配置的 webhook 中接收事件数据,请使用以下方法:
// 获取请求体并将其解析为 JSON$input = @file_get_contents("php://input"); $event_json = json_decode($input); // 使用 $event_json 做一些事情### Webhook 记录
从版本 2.0 开始,此包允许您记录触发 webhook 的有效负载和响应。
注意:强烈建议使用非阻塞队列驱动程序(非
sync
)。否则,您的应用程序将需要等待 webhook 执行。
您可以配置每个 webhook 将保存多少条日志(默认 50 条)。
此值可以在配置文件 config/captain_hook.php
中修改。
有时您不想使用系统级 webhook,而是希望它们针对特定的“租户”进行范围限定。这可能绑定到一个用户或一个团队。
webhook 表有一个用于此目的的字段 tenant_id
。因此,如果您想允许用户添加他们自己的 webhook,您就不会使用 artisan 命令将 webhook 添加到数据库中,而是自行添加。
例如,要添加针对当前用户的 webhook,您可以这样做:
Webhook::create([ "url" => Input::get("url"), "event" => "\\App\\Events\\MyEvent", "tenant_id" => Auth::id() ]);
现在当您触发此事件时,您只想为当前登录的用户调用 webhook。
为了过滤 webhook,请修改 config/captain_hook.php
文件中的 filter
配置值。这是一个 Laravel 集合过滤器。
要只为当前登录的用户返回 webhook,它可能看起来像这样:
'filter' => function( $webhook ){ return $webhook->tenant_id == Auth::id(); },## 许可证
CaptainHook 是免费软件,根据 MIT 许可证的条款分发。
“第二日:桌子、台灯和宝藏地图”图像根据 Creative Commons 2.0 许可证授权 - 图片来自 stevedave