问题 需要反馈

Raysefo.

众所周知的成员
加入
2019年2月22日
消息
204
编程经验
10+
你好,

我有一个Web API,它调用第三方API。客户希望我根据终端(商店中的现金寄存器)进行日常销售限制。我正在计算当前授权的总销量。客户可以购买11个不同的项目。在请求中,我正在获得项目代码,没有价格。价格从第三方API退货。为了正确计算基于终端的日常销售,我必须知道当前的请求的价格。现在,我可以添加if语句,但它无法管理。我可以创建一个表添加项目代码及其价格,但仍然是,它不是那么优雅。此外,我会再次去DB。我对如何解决的问题犹豫不决,你的建议是什么?

最好的祝福。
 

jmplhinney.

C#论坛主持人
工作人员
加入
2011年4月23日
消息
3,576
地点
悉尼,澳大利亚
编程经验
10+
我正在计算当前授权的总销量。
开始似乎相当奇怪。该属性的目的是确定呼叫者是否被授权进行呼叫。如果它是允许呼叫,并且它是所谓的方法,然后应该做工作并返回数据。
 

跳伞运动员

工作人员
加入
2019年4月6日
消息
2,628
地点
切萨皮克,va.
编程经验
10+
回忆起他 其他线程。他的客户每天有交易限制。他正在使用授权过滤器,以防止客户在达到其限制时进行进一步的请求。
 

跳伞运动员

工作人员
加入
2019年4月6日
消息
2,628
地点
切萨皮克,va.
编程经验
10+
我的推荐就像深入的防守。
第一层是在数据库中有一个简单的表,该表只有两列:客户端ID和每日总数。此表包含当天由客户成功制作的实际事务总数。显然,您需要某种背景任务每天清除表格。您的授权过滤器将简单地检查此数据库以快速检查以查看客户端是否超过其限制(或者如果您对每个事务有已知的固定成本,则将不久会超过其限制)。没有必要在这里做任何缓慢或复杂的事情。

第二层是实际开始执行所请求的事务的计算。这可以包括您的复杂逻辑,用于查找挥发性日常价格。如果此当前事务的总和加上第一个图层使用的数据库中的当前总数超过限制,则返回未经授权的错误代码。如果总和仍然低于限制,则完成事务,然后更新第一层使用的数据库,最终返回客户端请求的结果。

所以是的,这是客户端几乎处于极限的问题,但不太那里,所以他们继续前往第二层需要做更多的工作。您可能会在第二层中实现一些缓存,以便如果您看到相同的客户端和相同的事务请求,则可以绕过大量数据库查找和计算。如果他们继续尝试快速连续,希望这将触发您的反DOS和防DDOS检测,并且您可以开始从该客户端开始限制/过滤请求。 (您可以使用/建立防DOS和防DDOS保护,右?)
 
最佳 底部