应用领域程序USBAPI(Application Programming Interface),是提供更多某一业务输入潜能、相连相同控制系统的一种签订合同。这儿主要包括外部控制系统与提供更多服务项目的控制系统(中控台控制系统)或者前台相同的控制系统间的可视化点。主要包括外部USB、外部USB、外部USB有主要包括:下层服务项目与下层服务项目USB、同价位USB。
常用的webUSB是http/https协定USB,绝大多数用作外部控制系统或后端控制系统的初始化,因此这类USB门牌号要曝露在外部,因此必须交会的可靠性做较低的母雷氏。更要倚赖如前所述开放源码rpc构筑的跨控制系统USB的初始化计划、这类主要用作大公司外部网各控制系统间的互相初始化,这类USB服务项目环境治理潜能大列佩季哈区,USB初始化形式速度慢。
一、USB允诺形式类别
常用的http允诺贝,加进到你的提货门牌号时,用的则是postUSB。而这儿三种也是其中最常用的三种USB类别
1)get类别USB
文档格式:允诺模块写在前面,用“”?“”相连,数个模块间用“”&“”相连。
情景:get型USB用作获取信息,多用作查阅统计数据,如工具栏条目展现,搜寻展现,订货查阅,代金券查阅等需要其它控制系统回到统计数据时采用。一般情况下允诺的信息量较细,回到速度慢,不过USB是曝露在外面的,因此会有一定的风险。
2)post型接口
表明:向选定天然资源边线递交统计数据(如递交配置文档、上载文档)来进行允诺、post允诺可能会导致薪天然资源的建立。
情景:如注册登记、上载、Imgur之类机能、这种允诺信息量大、可靠性要求高。
其它USB类别put(put)、delete(删)、patch等采用错误率略低一些,该处无须约勒。
二、USB的响应机制类别
从回到上去分、分为同步USB、异步USB
1)同步可视化
指发送一个允诺,需要等待回到,然后才能发送下一个允诺,有个等待过程;
比如登录USB,执行登录操作时,将用户名、密码、token等字段加密后通过USB母雷氏,需要回到验证结果,才能登录成功
2)异步操作
选定送一个允诺、不需要等待回到、随时可以再发送下一个允诺,即不需要等待。
如用户领到代金券,只需要将用户的领券行为允诺成功,资产控制系统收到允诺后异步操作用户发券,通过异步的形式执行发券,初始化初始化方无需等待每个允诺的初始化结构。
区别:一个需要等待,一个不需要等待,在不影响用户体验的情况下,我们的项目开发中一般会优先选择不需要等待的异步递交形式。
比如用户登录、银行的转账控制系统,对统计数据库的保存操作等,都会采用同步操作,其余情况都优先采用异步操作
三、USB的触发形式类别
1)分发USB
一个控制系统产生新统计数据的时候就分发给其它控制系统(也可以是数个)。
中台控制系统的核心思想是高内聚、低耦合,因此分发USB的采用情景还是比较多的。比如有一个主渠道控制系统来管理所有的渠道统计数据,而渠道统计数据是其它控制系统如商品控制系统、促销控制系统经常要采用到的信息。因此一旦出现新的渠道或者发生渠道变更,需要分发给其它所有交会了各个控制系统,实现对最新渠道的机能支撑。
2)订阅USB
一个控制系统在需要的时候初始化其它控制系统的USB进行统计数据订阅。
比如订消息队列,比如KFK,其它由需要跟进订货状态的的控制系统订阅KFK消息后,
四、其它APIUSB基本组成
再既定的业务下,USB允诺类别、响应机制等确定后,再以微信支付API为例,了解下USB的其它组成内容。
1)应用领域情景
顾名思义,此USB适用作的情景,明确USB的业务用途。
![api 接口设计原则有哪些? api 接口设计原则有哪些?](https://pica.zhimg.com/80/v2-8f9a69adb444bce5569048d4e50ae4be_720w.webp?source=1940ef5c)
![api 接口设计原则有哪些?1 api 接口设计原则有哪些?](https://picx.zhimg.com/80/v2-e0816996dcc538899de9d442c9f71341_720w.webp?source=1940ef5c)
入参是USB允诺所需要的变量模块,其中主要包括必填模块和非必填模块,非必填并非是可以忽略的,比如上面的入参中,签名类别为非必填,如果未传此模块,则默认此签名类别为MD5,如果采用的并非这类签名类别,则此项为必填项。如果是普通订货查阅,入参时间非必填,则回到结果是用户全部订货,或者用户某一时间订货的区别。
3)错误码
USB允诺并非每次都能成功,因此在USB开发时会对可能失败的情况进行错误码区分,在USB联调时可以根据回到的错误码快递定位问题。如果错误码不够全面,那在USB初始化失败的时候,需要反复定位,降低开发效率。
![api 接口设计原则有哪些?2 api 接口设计原则有哪些?](https://picx.zhimg.com/80/v2-f9e45ccd97772173826e081bbac88e94_720w.webp?source=1940ef5c)
五、USB可靠性校验
USB完成业务逻辑开发后,接下来要考虑的就是可靠性
即USB的伪装攻击,因为USB是对外的,在公网环境中,USB门牌号是曝露的,收到的允诺有可能是恶意非法允诺;如果真的是合法允诺,也需要知道这
近些年各大企业强制采用https替换掉原有的httpUSB,正是因为https所采用的的证书可靠性更高。
2)允诺是否会被篡改,回到统计数据可能会被截取
因为USB是对外的,因此接收允诺和回到统计数据的时候,是不可能采用明文形式传输的,否则一旦被恶意截取,会造成极大风险。因此允诺统计数据及回到统计数据都是需要加密的,这样即使数据被截取,也不用泄露统计数据的内容。这儿介绍几种现在常用的加密方法。
DES(Data Encryption Standard):统计数据加密标准,速度较快,适用作加密大量统计数据的场合;
3DES(Triple DES):是如前所述DES,对一块统计数据用三个相同的密钥进行三次加密,强度更高;
RSA:非对称加密,由 RSA公司发明,是一个支持变长密钥的公共密钥算法,需要加密的文档块的长度也是可变的;既可以实现加密,又可以实现签名。
如果是用户账号相关,现在会采用token加密用户信息,用户允诺身份信息时,服务项目端会分配token存在缓存中,后续允诺会将token与时间戳一起打包加密,这样即使允诺统计数据被截获,因为不知道token的值,统计数据也不会被解析出来。
3)如何防范USB的重放攻击,防重放攻击是什么呢?
就是把你的允诺原封不动地多次发放,允诺都会通过验证进入到正常逻辑中,会造成服务项目端USB拥堵并且会造成实际损失。
防重放一般需在允诺模块加上 时间戳 + 随机数,通过时间戳确保USB是最新的允诺,而随机数相同则可以认定为是重放攻击。
六、USB性能相关
如果是访问量比较大的USB,再上线前肯定需要进行压力测试。因为普通的开发自测和生产模拟是不能推算出高并发时候USB是否可正常运行。
1)TPS
Transaction Per Second 每秒控制系统处理的交易或事物的数量,衡量控制系统处理潜能的重要指标。
2)RT
响应时间,从客户端发送一个允诺开始,到客户端接收到从服务项目器回到的响应结果结束所经历的时间,主要包括允诺发送时间,网络传输时间和服务项目器处理时间三部分。
3)吞吐量
指的是在一次性能测试过程中网络上载输的信息量的总和。
用户的响应时间自不必说,时间太久伤用户体验,及时处于高并发期,用户的响应时间依然需要控制到最低,一般不超过5s;
tps则是高并发的指标,一般提供更多服务项目的USB,需要考虑到最极端情况下的并发数,这些数量一般来自于运营的活动策划和往期的统计数据趋势预估,以此为依据,保证自己的USB可以支持最高的并发数,而验证这些采用的一般是压力测试。如正常情况下压测时tps可以达到2000时USB正常,就可以保证2000的实际并发。
七、USB需要做哪些测试
USB测试其实是白盒测试,首页要明确控制系统的潜能输入,明确服务项目覆盖是否满足需求。以业务逻辑推USB模块。
1)入参不符合要求需要有明确错误码,报错信息和日志,方便问题复现与定位。
2)如果另有模块处理逻辑的链路,也需要一并验证,如购买网易云音乐会员,订货生成后会去权益控制系统加权,加权成功后会有短信通知用户,但加权USB和订货信息中都没有用户手机号,因此虽然入参中没有用户手机号,但需要根据用户的username去查阅手机号,并执行短信发放的操作。
其它验证目标如:代码覆盖率是否达到要求、性能指标是否满足要求、安全指标是否满足要求则是更为专业性的测试指标了。