viezel / webhooks
Laravel的Webhooks
1.0.0
2020-10-20 11:39 UTC
Requires
- php: ^7.4
- illuminate/contracts: ^8.0
- illuminate/queue: ^8.0
- illuminate/support: ^8.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.16
- orchestra/testbench: ^6.0
- phpunit/phpunit: ^9.3
- vimeo/psalm: ^3.11
This package is auto-updated.
Last update: 2024-09-20 20:48:56 UTC
README
简单强大的Webhooks实现。
安装
您可以通过composer安装此包。
composer require viezel/webhooks
您可以使用以下命令发布并运行迁移:
php artisan vendor:publish --provider="Viezel\Webhooks\WebhooksServiceProvider" --tag="migrations" php artisan migrate
将路由添加到您的应用程序中。以下是带有认证、api前缀和命名的典型路由配置。
Route::middleware('auth:api')->prefix('api')->as('webhooks.api.')->group(function() { Route::get('hooks', Viezel\Webhooks\Controllers\API\ListWebhooks::class)->name('list'); Route::get('hooks/events', Viezel\Webhooks\Controllers\API\ListWebhookEvents::class)->name('events'); Route::post('hooks', Viezel\Webhooks\Controllers\API\CreateWebhook::class)->name('create'); Route::delete('hooks/{id}', Viezel\Webhooks\Controllers\API\DeleteWebhook::class)->name('delete'); });
使用方法
首先,在应用程序中注册应作为Webhooks公开的事件。为此,您的事件应实现ShouldDeliverWebhooks
接口。
该接口有两个方法,getWebhookName
用于为Webhook提供一个唯一的名称,以及getWebhookPayload
用于定义与Webhook一起发送的数据。
以下示例显示了如何实现Post Updated事件及其实现:
use App\Models\Post; use Viezel\Webhooks\Contracts\ShouldDeliverWebhooks; class PostUpdatedEvent implements ShouldDeliverWebhooks { public function __construct(Post $post) { $this->post = $post; } public function getWebhookName(): string { return 'post:updated'; } public function getWebhookPayload(): array { return [ 'post' => $this->post->toArray(), 'extra' => [ 'foo' => 'bar' ] ]; } }
接下来,您需要将所有事件注册到WebhookRegistry
中。这通常在ServiceProvider的boot方法中完成。
public function boot() { WebhookRegistry::listen(PostUpdatedEvent::class); }
要检查一切是否按预期工作,请访问Webhooks事件路由。默认路由为:/api/hooks/events
。这取决于您如何注册Webhook路由。
列出可用的Webhooks事件
GET https://myapp.test/api/hooks/events
列出注册的Webhooks
GET https://myapp.test/api/hooks
注册Webhook
POST https://myapp.test/api/hooks
{ "events": [ "post:updated" ], "url": "https://another-app.com/some/callback/route" }
删除Webhook
DELETE https://myapp.test/api/hooks/{id}
测试
composer test
鸣谢
许可证
MIT许可证(MIT)。有关更多信息,请参阅许可证文件。