mpociot / captainhook
将webhooks添加到您的Laravel应用程序中。
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
This package is auto-updated.
Last update: 2024-08-24 10:50:24 UTC
README
## Captain Hook ## 将Webhooks添加到您的Laravel应用程序,arrr使用Laravel事件系统在您的Laravel应用程序中实现多个webhooks。
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
中添加
Mpociot\CaptainHook\CaptainHookServiceProvider::class
到providers
数组。
发布并运行迁移以创建将保存所有安装的webhooks的"webhooks"表。
php artisan vendor:publish --provider="Mpociot\CaptainHook\CaptainHookServiceProvider" php artisan migrate## 用法
CaptainHook服务提供程序监听任何eloquent.*
事件。
如果该软件包找到为事件配置的webhook,它将向指定的URL发送POST请求。
Webhook数据作为JSON发送到POST请求体中。完整的事件对象包括在内,并在解析JSON体后可以直接使用。
示例
假设您希望有一个每当您的User模型被更新时被调用的webhook。
从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"
您还可以为同一事件添加多个webhook,因为所有配置的webhook都将异步调用。
### 删除现有的webhooks要从系统中删除现有的webhook,请使用hook:delete
命令。此命令接受webhook ID作为参数。
php artisan hook:delete 2### 列出所有活动webhooks
要列出所有现有的webhook,请使用hook:list
命令。
它将以表格形式输出所有配置的webhook。
### 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 许可证条款分发。
'第 02 天:桌子、台灯和宝藏地图' 图片由 Creative Commons 2.0 许可 - 图片来自 stevedave