clarkwinkelmann / flarum-ext-idempotency
向 Flarum API 添加幂等键
0.1.0
2021-04-11 17:25 UTC
Requires
- flarum/core: ^0.1.0-beta.16
README
这个扩展主要是作为一个概念验证,但它是完全工作的。请告诉我您认为它可以应用的用例!
它实现了可选的幂等 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 社区线程提供,基于“尽力而为”的原则。