我想知道是否有一种标准方法可以拒绝 API 网关本身在几秒钟内发送的具有相同正文的请求。
Forex:如果我尝试在几秒钟内在不同的群组中发布相同的内容,Reddit 会拒绝。同样,如果我第二次使用信用卡付款,它会自动拒绝。
我想知道是否有一种方法可以在 AWS API gateway 本身中具有相同的行为,这样我们就不会在带有 dynamoDB 和其他内容的 lambda 函数中处理它。
期待有效的方法。
API 网关目前不提供类似的功能,您必须自己实现。
如果我要实现这一点,我可能会使用内存缓存(例如 ElastiCache for Redis 或 Memcached)作为重复数据删除的存储后端。 对于每个传入的请求,我将确定其独特之处,并从中创建一个哈希值。
然后我检查该哈希值是否已在缓存中。如果是这样的话,它就是重复的,我会拒绝该请求。如果它还没有在缓存中,我会添加它的生存时间为
n
秒(我希望删除重复的时间间隔)。
我在几个地方看到过这种模式:
“使用幂等 API 确保重试安全”
我想说这个答案太长了,但文章解释了它。
https://aws.amazon.com/builders-library/making-retries-safe-with-idempot-APIs/ https://www.linkedin.com/pulse/request-deduplication-pattern-introduction-ankit-rana/ https://medium.com/ralali-engineering/prevent-duplicate-request-using-idempotency-82e104663b99 https://blog.bytebytego.com/p/ep56-system-design-blueprint-the