clarkwinkelmann/flarum-ext-idempotency

向 Flarum API 添加幂等键

0.1.0 2021-04-11 17:25 UTC

This package is auto-updated.

Last update: 2024-09-12 01:01:50 UTC


README

License Latest Stable Version Total Downloads Donate

这个扩展主要是作为一个概念验证,但它是完全工作的。请告诉我您认为它可以应用的用例!

它实现了可选的幂等 POST 请求到 Flarum REST API。

然后它修改了 Flarum 前端,使得讨论和帖子创建使用它们。

通过传递一个具有唯一值的 Idempotency-Key 标头来请求幂等。如果使用相同键发出另一个请求,则该请求将被忽略,并再次返回之前的响应。

关键特性

  • 可以用于 REST API 的所有 POST 路由,包括由扩展注册的路由。
  • 仅与返回 Laminas 的 JsonResponse 实例的请求一起工作。在非 JsonResponse 类型上尝试使用幂等键将返回 400 错误,但请求仍将被执行!
  • 键必须对每个动作者唯一。访客不能使用幂等键。
  • 如果请求体与具有相同幂等键的原始请求不匹配,将抛出 400 错误。
  • 仅缓存成功的请求。假设抛出的任何异常都发生在任何数据保存之前。
  • 缓存配置为 24 小时,目前不可配置。

注意事项

  • 扩展无法区分数据保存前后发生的异常。选择不缓存这些请求,以便可以再次尝试。您应该使用异步队列来降低这种情况发生的风险。
  • Flarum 默认文件系统缓存驱动器会很快填满条目,并且我认为它不会自动清理过期的文件。您可能需要在任何重要的论坛上使用不同的缓存驱动器。
  • 通过中间件添加标题或根据某些内部状态修改 JSON 响应的扩展可能会受到影响。可能需要根据情况更改扩展的启动顺序。
  • 竞争条件可能允许同时发出的两个请求都被执行。使用异步队列驱动程序可以帮助解决这个问题,因为第一个请求完成得越早,缓存的响应就越快可用于第二个请求。

安装

请确保您理解上面的描述。您很可能不需要/想要那个扩展。

composer require clarkwinkelmann/flarum-ext-idempotency

支持

此扩展处于 最小维护 状态。

它是为客户开发的,并作为开源软件发布,以造福社区。我可能会免费发布简单的错误修复或兼容性更新。

您可以通过 联系我 来赞助额外功能或更新。

支持通过 Flarum 社区线程提供,基于“尽力而为”的原则。

链接