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