须要屡次揭示确认后能力提交接口怎样设计 (须要屡次揭示的成语)
本文目录导航:
须要屡次揭示确认后能力提交接口怎样设计
1、在提交接口前参与确认揭示框,让用户明白自己的志愿并确认提交。
例如,可以在提交按钮上参与一个二次确认按钮,当用户点击提交按钮后,弹出一个揭示框,揭示用户“您确定要提交吗”,并让用户再次点击确认按钮能力提交。
2、在确认揭示框中参与倒计时配置,让用户有足够的时期来思考能否要提交。
例如,可以在揭示框中参与一个倒计时配置,让用户有5秒钟的时期来确认能否要提交,假设用户没有点击确认按钮,系统智能封锁揭示框,防止误操作。
3、参与屡次确认配置,让用户在确认提交前可以屡次思考。
例如,可以在提交按钮上参与一个屡次确认按钮,当用户点击提交按钮后,弹出一个揭示框,揭示用户“您确定要提交吗”,并让用户选用“是”或“否”,假设用户选用“是”,则再次弹出一个揭示框,让用户再次确认能否要提交,如此循环屡次,直到用户确认提交或选用“否”为止。
细说Restful API之幂等性
幂等性原本是数学中的含意,表白的是N次变换与1次变换的结果相反。
而RESTFul API中的幂等性是指调用某个接口1次或N次,对所访问的资源发生的影响结果都是相反的,须要特地留意的是:这里幂等性指的是对资源发生的影响结果,而非调用HTTP恳求的前往结果。
举个例子,RESTFul API中的GET方法是查问资源信息,不会对资源发生影响,所以它是合乎幂等性的,然而每次调用GET方法前往的结果有或许不同(或许资源的某个属性在调用GET方法之前曾经被其余方法修正了,例如在屡次访问时期,接口前往对象的update_time字段被别的恳求降级,但GET自身是幂等性的)。
实践上,在散布式架构中的API幂等性不只仅针对RESTFul接口,而是对一切类型的接口实用,目的是为了确保调用1次或N次接口时对资源的影响结果都是相反的。
接口的幂等性确保了无论调用1次还是N次对资源的影响都是相反的,这在某些场所下是十分有用的。
举个业务场景:用户下单,银行从用户账户扣款。
有这样一个接口方法:pay(long account, int money),该方法用于银行卡扣款支付,参数account为账户ID,money为须要扣除的钱数。
当用户从网页上点击支付按钮时,在该方法的成功逻辑中须要从指定账户中扣除对应的商品价钱。
假设支付操作曾经成功口头,然而照应信息由于某种要素未能及时前往给客户端,这时刻给用户的体验是或许是未支付成功,假设此时再次点击支付按钮,那么将再一次性口头该方法,结果或许会造成用户只买了一件商品却扣减了双份的钱,这当然是不正当的。
整个流程如下图所示: 当然,就上述例子的场景,为了防止用户重复支付,是可以经过别的模式处置的,比如:散布式事务;或许依据支付形态揭示给予用户启动揭示等等。
然而,假设引入了散布式事务,那么将带来成功上的复杂性,而且会影响到接口性能;而采取揭示信息的模式并不能百分之百确保用户不会重复支付,存在必定的危险。
而假设接口合乎幂等性,即:对同一个订单无论是口头一次性支付还是屡次支付,在服务端都确保只会扣一次性款,那么既不须要引入散布式事务的复杂性,也能从基本上处置重复支付的疑问,这也就是接口合乎幂等性的价值所在。
总而言之,接口合乎幂等性在可以降落系统成功的复杂性,并能保证资源形态的分歧性。
RESTFul格调的接口设计实质上经常使用的是HTTP协定的恳求方法,因此,RESTFul接口方法的幂等性指的就是HTTP方法的幂等性。
罕用的HTTP方法有: 那么,这些HTTP方法的幂等性又是什么样的呢?除了幂等性之外,HTTP方法的安保性是指不对资源发生修正。
如下是罕用HTTP方法的幂等性和安保性总结: 从上述表格中可以看出,HTTP方法的幂等性和安保性并不是同一个概念,如下是对个各个方法的幂等性和安保性解释: 设计幂等性接口的主要在于保证接口不论是被调用1次还是N次,它对资源所发生的影响都是相反的。
从上述HTTP方法的幂等性总结中可以得悉,HTTP协定的POST和PATCH方法都不是幂等性的(然而咱们却经常会在RESTFul接口中经常使用到它们),那能否就象征中不可将POST和PATCH方法设计为幂等性接口了呢?答案显然能否认的。
在上述例子中,可以将订单ID也作为方法参数之一,如:pay(long account, int money, long order),这样在服务端确保一个订单只会被支付一次性(订单号是全局惟一的),那么无论该方法被调用1次还是N次结果都是一样的,也就保证了接口的幂等性。
当然,在哪些没有订单号的场景,可认为接口操作生成一个全局惟一的处置号ID,并把该处置号ID作为方法参数之一,这样在服务端确保一个处置号ID只会被口头一次性就保证了接口的幂等性。
合乎幂等性的接口调用流程形容如下图所示: 只管说设计合乎幂等性的接口在某些场所可以降落系统的复杂性(如:可以不用引入散布式事务),然而并非在一切场所的疑问都能经过幂等性接口处置,在必要的时刻依然须要引入散布式事务处置这样的框架。
咱们不要也不能把接口幂等性作为万能的处置方法,然而,咱们在设计接口时尽量思考合乎幂等性处置是十分有价值的。
【参考】
如何处置短信验证码接口被攻打的疑问?
图形验证码
短信防火墙