跟踪/限制对 SendGrid (C#) 的外部 API 调用
Tracking / Throttling external API calls for SendGrid (C#)
我正在 ASP.Net/WebAPI 中构建带有后端的原型 MVP 应用程序。它使用标准 Asp.Net 身份提供程序进行设置,用于创建用户帐户。
我已经添加了一个电子邮件服务,并按照 this 教程将其连接到 SendGrid 以支持:
- 发送"Confirm Email"消息
- 发送"Password Reset"消息。
我正在使用免费的 SendGrid 套餐 - 每天 100 条消息,我不太可能很快达到 - 但是,我仍然想添加一些功能来跟踪并将呼叫限制为每天 100 条。还要防止同一用户每天不断请求电子邮件确认/密码重置超过 5 次 - 执行此操作的最佳策略是什么?
我想创建一个数据库Table:
|Date | User | MessageType
当调用发送确认邮件或重设密码的方法时,检查当天的总行数是否少于 100 并且给定用户的总消息数是否少于 10。
如果是这样,请调用 API 发送电子邮件,然后更新 table
If not just return 向客户端应用程序发送一条错误消息,提示稍后再试(虽然不理想,但对于初始阶段应该足够了)。
有没有更好的方法来实现这个?
是的 DB table 就足够了。不过,您可以用一列来更新计数本身,而不是计算行数。否则,有可能会增加 table 的大小,这可能会延迟该方法。
我正在 ASP.Net/WebAPI 中构建带有后端的原型 MVP 应用程序。它使用标准 Asp.Net 身份提供程序进行设置,用于创建用户帐户。
我已经添加了一个电子邮件服务,并按照 this 教程将其连接到 SendGrid 以支持:
- 发送"Confirm Email"消息
- 发送"Password Reset"消息。
我正在使用免费的 SendGrid 套餐 - 每天 100 条消息,我不太可能很快达到 - 但是,我仍然想添加一些功能来跟踪并将呼叫限制为每天 100 条。还要防止同一用户每天不断请求电子邮件确认/密码重置超过 5 次 - 执行此操作的最佳策略是什么?
我想创建一个数据库Table:
|Date | User | MessageType
当调用发送确认邮件或重设密码的方法时,检查当天的总行数是否少于 100 并且给定用户的总消息数是否少于 10。
如果是这样,请调用 API 发送电子邮件,然后更新 table
If not just return 向客户端应用程序发送一条错误消息,提示稍后再试(虽然不理想,但对于初始阶段应该足够了)。
有没有更好的方法来实现这个?
是的 DB table 就足够了。不过,您可以用一列来更新计数本身,而不是计算行数。否则,有可能会增加 table 的大小,这可能会延迟该方法。