产品经理须知|API接口知识小结
本文摘要:随着产品职能的逐步细分,中后台产品经理,尤其是负责开放平台有关的,平常工作主假如围绕API接口进行,所以更是需要能理解API接口,因为接口的职能是系统的输出表现。本文就关

伴随商品职能的逐步细分,中后台商品经理,特别是负责开放平台有关的,平时工作主如果围绕API接口进行,所以更是需要能理解API接口,由于接口的职能是系统的输出表现。本文就关于商品经理需要知道的接口有关常识进行小结。

应用程序接口API(平台lication Programming Interface),是提供特定业务输出能力、连接不同系统的一种约定。这里包括外部系统与提供服务的系统(中后台管理软件)或后台不同系统之间的交互点。包括外部接口、内部接口,内部接口又包括:上层服务与下层服务接口、同级接口。

本文站在商品经理角度由浅入深讲述接口有关常识。假如不想被视为技术大佬眼中什么都不懂的需要搬运工,了解接口的有关常识是非常有必要的。

容易见到web接口是http/https协议的接口,多用于外部系统或前端系统的调用,由于此类接口地址要暴露在外部,所以需要对接口的安全性做较高程度的校验。还要一种基于开源rpc构建的跨系统接口调用接口策略,此类主要用于大公司内网各系统间的互相调用,此类接口服务治理能力更强,接口相应速度更块。以下内容以http接口为例展开的讨论。

1、接口请求方法种类

容易见到的http请求方法包括:get(查)、post(增),此外还有put(改)、delete(删)等。接口所属种类是由业务决定的。譬如你打开淘宝,展示的首页内容就需要用到get接口,获得页面信息,你看中了宝贝要下单,添加你的收成地址时,用的则是post接口。而这两种也是其中最容易见到的两种接口种类

1)get种类接口

格式:请求数参数写在网址后面,用”?”连接,多个参数之间用”&”连接。

场景:get型接口用于获得信息,多用于查看数据,如菜单列表展示,搜索展示,订单查看,折扣券查看等需要其他系统返回数据时用。通常情况下请求的数据量较小,返回速度快,不过接口是暴露在外面的,所以会有肯定的风险。

2)post型接口

说明:向指定资源地方提交数据(如提交表单、上传文件)来进行请求,post请求可能会致使新资源的打造。

场景:如体验、上传、发帖等功能,这种请求数据量大,安全性需要高。

其他接口种类如put(改)、delete(删)、patch等用评率稍低一些,此处不再赘述。

2、接口响应机制种类

从返回上区别,分为 同步接口、异步接口

1)同步交互

指发送一个请求,需要等待返回,然后才可以发送下一个请求,有个等待过程;

譬如登录接口,实行登录操作时,将用户名、密码、token等字段加密后通过接口校验,需要返回验证结果后,才能登录成功。

2)异步交互

指发送一个请求,无需等待返回,随时可以再发送下一个请求,即无需等待。

如用户领导折扣券,仅需将用户的领券行为请求成功,资产系统收到请求后异步操用途户发券,通过异步的办法实行发券,调用方无须等待每一个请求的调用结果。

不同:一个需要等待,一个无需等待,在不影响客户体验的状况下,大家的项目开发中通常会优先选择无需等待的异步交互方法。

哪些状况推荐使用同步交互呢?譬如用户登录、银行的转账系统,对数据库的保存操作等等,都会用同步交互操作,其余状况都优先用异步交互。

3、接口的触发形式种类

1)分发接口

一个系统产生新数据的时候就分发给其它系统(也可以是多个)。

中台系统的核心思想是高内聚、低耦合,所以分发接口的用场景还是比较多的。譬如有一个主途径系统来管理所有些途径数据,而途径数据是其他系统如产品系统、营销系统常常要用到的信息。所以一旦出现新的途径或者发生途径变更,需要分发给其他所有对接了各个系统,达成对最新途径的功能支撑。

2)订阅接口

一个系统在需要的时候调用其他系统的接口进行数据订阅。

譬如订单系统生成订单时,由于不少外部系统可能需要准时获得订单状况信息。而订单系统也不知晓要分发给哪些系统,这个时候通常会将订单推送至特定的消息队列,譬如KFK,其他由需要跟进订单状况的的系统订阅KFK消息后,可以即便获得订单完成信息,进行触发下一个动作。

4、其他API接口基本组成

再既定的业务下,接口请求种类、响应机制等确定后,再以微信支付API为例,认识下接口的其他组成内容。

1)应用场景

顾名思义,此接口适用于的场景,明确接口的业务作用与功效。

2)入参及出参

入参是接口请求所需要的变量参数,其中包括必填参数和非必填参数,非必填并不是是可以忽视的,譬如上面的入参中,签名种类为非必填,假如未传此参数,则默认此签名种类为MD5,假如用的并不是此类签名种类,则此项为必填项。若是一般订单查看,入参时间非必填,则返回结果是用户全部订单,或者用户特定时间订单有什么区别。

3)错误码

接口请求并不是每次都能成功,所以在接口开发时会对可能失败的状况进行错误码区别,在接口联调时可以依据返回的错误码快递定位问题。假如错误码不够全方位,那在接口调用失败的时候,需要反复定位,减少开发效率。

5、接口安全性校验

接口完成业务逻辑开发后,下面要考虑的就是安全性问题了,接口的安全性问题主要源自几方面考虑:

1)请求出处是不是合法?

即接口的伪装攻击,由于接口是对外的,在公网环境中,接口地址是暴露的,收到的请求大概是恶意非法请求;假如真的是合法请求,也需要知晓这个请求的出处,同时这个请求出处不可以不承认。这里引入“签名”的定义,与签名的防伪装及抗不承认性特质。

近些年各大企业强制用https替换掉原有些http接口,正是由于https所用的的证书安全性更高。

2)请求会不会被篡改,返回数据可能会被截取

由于接口是对外的,所以接收请求和返回数据的时候,是不可能用明文方法传输的,不然一旦被恶意截取,会导致很大风险。所以请求数据及返回数据都是需要加密的,如此即便数据被截取,也不需要泄露数据的内容。这里介绍几种目前容易见到的加密办法。

DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密很多数据的场所;

3DES(Triple DES):是基于DES,对一块数据用三个不一样的密钥进行三次加密,强度更高;

RSA:非对称加密,由 RSA公司创造,是一个支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变的;既可以达成加密,又可以达成签名。

若是用户账号有关,目前会用token加密用户信息,用户请求身份信息时,服务端会分配token存在缓存中,后续请求会将token与时间戳一块打包加密,如此即便请求数据被截获,由于不知晓token的值,数据也不会被分析出来。

3)怎么样防范接口的重放攻击,防重放攻击是什么呢?

就是把你的请求原封不动地多次发放,请求都会通过验证进入到正常逻辑中,会导致服务端接口拥堵并且会导致实质损失。

防重放通常需在请求参数加上 时间戳 + 随机数,通过时间戳确保接口是最新的请求,而随机数相同则可以认定为是重放攻击。

6、接口性能有关

若是访问量比较大的接口,再上线前一定需要进行重压测试。由于一般的开发自测和生产模拟是不可以推算出高并发时候接口是不是可正常运行。

1)TPS

Transaction Per Second 每秒系统处置的买卖或事物的数目,衡量系统处置能力的要紧指标。

2)RT

响应时间,从推广客户端发送一个请求开始,到推广客户端接收到从服务器返回的响应结果结束所经历的时间,包括请求发送时间,互联网传输时间和服务器处置时间三部分。

3)吞吐量

指的是在一次性能测试过程中互联网上传输的数据量的总和。

用户的响应时间自不必说,时间太久伤客户体验,准时处于高并发期,用户的响应时间依旧需要控制到最低,通常低于5s;

tps则是高并发的指标,通常提供服务的接口,需要考虑到最极端状况下的并发数,这部分数目通常源于运营的活动策划和以往的数据趋势预估,以此为依据,保证我们的接口可以支持最高的并发数,而验证这部分用的通常是重压测试。如正常状况下压测时tps可以达到2000时接口正常,就可以保证2000的实质并发。

7、接口需要做哪些测试

接口测试其实是白盒测试,首页要明确系统的能力输出,明确服务覆盖是不是满足需要。以业务逻辑推接口参数。

1)入参不符合需要需要有明确错误码,显示错误信息和日志,便捷问题复现与定位。

2)假如另有参数处置逻辑的链路,也需要一并验证,如购买网易云音乐会员,订单生成后会去权益系统加权,加权成功后会有短信公告用户,但加权接口和订单信息中都没用户手机号,所以虽然入参中没用户手机号,但需要依据用户的username去查看手机号,并实行短信发放的操作。

其他验证目的如:代码覆盖率是不是达到需要、性能指标是不是满足需要、安全标准是不是满足需要则是更为专业性的测试指标了。

本文由 @椒图 原创发布于每人都是商品经理,未经作者许可,禁止转载。

题图来自Unsplash,基于CC0协议。

相关内容