Fusio Api 之Event

fusio6个月前更新 admin
348 0

本人测试通过,建议查看官方文档以及视频演示

事件 | Fusio

Fusio 拥有一个事件系统,有助于构建Webhook系统。这意味着您的API开发者可以注册一个Webhook,当事件被触发时,Fusio会调用该URL。

事件

  • 事件名称:事件的名称。
  • 简短描述:对事件的简短描述。
  • 模式:描述此事件提交的有效负载的模式。

为了订阅一个事件,用户需要向 /consumer/webhook 端点发送一个HTTP POST请求,携带以下有效负载:

{
  "event": "my_event",
  "endpoint": "http://my-app.com/callback"
}

为了发布一个事件,您需要使用调度器来创建一个事件。例如,下面的动作展示了如何向事件 "my_event" 分发数据,这将把提供的数据以JSON格式编码后发送到已订阅的端点。

<?php
function writeToLog($message, $type = 'Info') {
    $logFile = '/tmp/eventlog.log';
    $logContent = date("Y-m-d H:i:s") . " - $type: $message\n";

    // file_put_contents($logFile, $logContent, FILE_APPEND);
}
//给回调的数据
$dispatcher->dispatch('my_event', [
    'foo' => 'bar'
]);
//正常访问的数据
return $response->build(200, [], [
    'event' => 'triggered',
]);
?php>
或
<?php 
$randomValue = rand(1, 100); // 生成1到100之间的随机数

$dispatcher->dispatch('my_event4', [
    'foo' => 'bar33' . $randomValue
]);

return $response->build(200, [], [
    'event' => 'triggered' . $randomValue,
]);

作为替代,您也可以使用现有的 Util-Dispatch-Event 动作,它将提供的有效负载分发到配置的事件。

Fusio 将向每个已订阅的端点发送以下HTTP POST请求。如果端点返回非成功的状态码,Fusio将尝试重新发送消息最多3次。

POST /callback HTTP/1.1
Host: my-app.com
Content-Type: application/json
User-Agent: Fusio/4.0.2@916a81045349cc0e149873b5b794777bb5f29a30
{"foo": "bar"}

Fusio 的事件系统主要用途确实是用于通知。通过这个系统,API 的消费者可以注册 Webhook,当特定事件发生时(如数据库记录更新、订单状态变化等),Fusio 会自动向这些注册的 Webhook 发送通知。这种方式使得外部服务能够及时响应 API 内部的变化,而无需不断轮询检查状态更新。

具体来说,这种机制有以下几个优点:

  • 实时性:消费者可以立即接收到事件通知,而不是定期查询是否有新数据。
  • 减少服务器负担:避免了消费者频繁查询数据带来的服务器压力。
  • 灵活性:不同的消费者可以根据自己的需求订阅不同的事件,实现个性化服务。

因此,Fusio 的事件系统非常适合用于构建需要实时通知的应用场景,如即时通讯、交易确认、状态更新等。

本人测试过程

在API菜单下的Event下新增一个事件

Fusio Api 之Event

在API菜单下的Action下新增一个动作

Fusio Api 之Event

在API菜单下的Action下新增一个Operation(路由)动作先择上面新建的动作event_test 点击创建。

Fusio Api 之Event

在Consumer下找到Webhook,新增一个webhook

Fusio Api 之Event

选择新建的my_event,选择用户,这里我们选择了’test’,最后是输入回调通知地址。

按照上述操作,回调网站http://requestbin.cn/可以接受到我们给回调地址的数据。

回调网站的教程https://developer.qiniu.com/kodo/kb/1398/correction-of-test-site

© 版权声明

相关文章