产品经理如何设计API接⼝
原则上API接⼝设计⼀般出现在开发的详细设计中,但是随着诸多公司建⽴开放平台,产品经理也逐渐需要能理解API接⼝,尤其是做平台性的产品,还要学会定义接⼝。本⽂就关于产品经理在设计接⼝中需要定义什么、需要注意什么来展开陈述。
⼀、了解API的常识
在做接⼝设计时,如果是新⼿,建议多参考并了解不同开放平台的接⼝样式,⽐如百度、旷视、腾讯等,从中可以发现⼀些共识;
1. 常⽤的通信协议
调⽤第三⽅平台接⼝需要进⾏系统间的通信,⽬前常⽤的协议是http和https;简单理解https是http的加密版,可以将⽤户到服务端请求的信息进⾏加密,避免因明⽂传输被截获⽽获知⽤户信息。
基于http协议的接⼝具有轻量级、跨平台、和跨语⾔的特点,为了适应不同的开发者,⽬前各个第三⽅平台都会提供基于各种常⽤语⾔的接⼝形式,因此⼤多采⽤http或https协议;举例,百度、科⼤讯飞:
2. 接⼝的请求⽅式
了解接⼝的请求⽅式有助于了解⽤户端和服务端间的交互⽅式,基于http协议的常⽤请求⽅式是post和get;两者的主要区别如下:
(1)直观区别:get请求⽅式是将请求参数放到url中,post是将参数放到requst body中,所带来的的直接影响是get的请求参数存在长度限制,post⽆限制;其次是get将参数放到url中安全性弱于post;
(2)深度区别:get请求⽅式⽤户端和服务端只产⽣⼀次交互,post请求⽅式⽤户端会和服务端产⽣两次交互,举例:快递⼩哥是⽤户端,你是服务端,则get就像常来你们⼩区和你认识的快递员直接将快件送到你家,你跟他说声谢谢;post就像新来的快递员先打个电话问下你在家吗?你告诉他你在家呢,过了5分钟他将快递送到你家了,你跟他说声谢谢;
⽬前百度、腾讯、旷视的图像识别接⼝均采⽤的是post请求⽅式
3. 接⼝响应机制
最后了解接⼝的响应机制:同步接⼝和异步接⼝;简单理解同步接⼝即实时返回消息给调⽤⽅,异步接⼝就是可以延迟返回消息给调⽤⽅;实时性要求⾼的且只能线性⼯作的需要采⽤同步接⼝,其他可以优先使⽤异步接⼝;当然不同的场景,同样的服务接⼝会被要求同步或异步;以⼈脸识别中的⼈脸注册为例:
(1)刷脸⽀付:以⽀付宝为例,使⽤之前需要按照步骤采集⼈脸,后台会调⽤⼈脸注册将当前⼈脸注册进⼈脸库并和该⽀付宝账号信息绑定,这⼀步⼈脸注册通常是同步接⼝,因为不会要求⽤户在APP前等待太久,需要及时返回注册成功信息;
(2)客流系统:现在商超使⽤的客流系统⼀般已经采⽤⼈脸识别取代头肩模型,这样不仅可以统计⼈数还可以统计⼈次,其中对于⾸次识别的陌⽣⼈脸通常需要注册进陌⽣⼈脸库,这⾥的⼈脸注册⼀般为异步接⼝,因为⼤型商超每天数⼗万客流且对于陌⽣⼈⽆会员信息,所以不需要实时注册,只要进⼊队列能在当⽇24⼩时内注册完即可;
百度api接口⼩结
以上关于API的接⼝常识在设计接⼝的时候,开发⼀般都会要求产品确定接⼝的响应机制;其他的开发都会⾃⼰完成;但作为开放平台的产品经常会对接开发,多了解些常识既可以跟⾃⼰的开发有更多的共同语⾔沟通,也可以在对接⽤户的时候可以跟⽤户的开发简单解释。
⼆、核⼼业务字段&接⼝约束
产品经理虽然不需要定义API所有的字段信息,但是跟业务需求有关的字段产品经理需要明确清晰。
1. ⼊参
(1)鉴权字段信息
调⽤第三⽅平台接⼝通常需要进⾏接⼝鉴权,服务端判断⽤户端是否有调⽤接⼝的权限;这⾥跟产品经理相关的是作为产品需要设计应⽤管理,包括:应⽤列表、应⽤创建、应⽤详情、应⽤配置、应⽤删除等操作;以百度AI平台,应⽤列表如下:
其中AppID、API Key和Secret Key为创建应⽤时⾃动⽣成,接⼝鉴权所需要的access_token必须通过API key和Secret key请求服务端获取。
(2)核⼼业务字段
产品经理需要根据业务需求明确接⼝⼊参中需要哪些字段信息以及字段⽀持的类型,以百度AI平台的菜品识别为例:
业务需求:识别图⽚中是哪种菜品;
产品需求:
输⼊图⽚,图⽚⽀持通常采⽤base64和URL格式;top_num,提⾼接⼝的通⽤性,⽅便⽤户后续场景扩展,因此⽀持配置返回菜品数量且排序;阈值,开放识别阈值,⽅便⽤户根据实际识别效果调整,提⾼准确率;注意点:设计接⼝核⼼业务字段,要尽量提⾼接⼝的通⽤性,以此适配更多的⽤户场景,⽐如top_num和阈值的开放,即泛化接⼝能⼒,将更多的主动权交由接⼝⽤户配置。
(3)字段信息约束条件
字段约束条件是为了保证接⼝的安全性,这点是产品经理跟业务⽅沟通达成⼀致后提供给开发⼩伙伴的;仍然以上⾯的菜品识别为例:
图⽚需要限制⽂件⼤⼩和分辨率⼤⼩,⽂件⼤⼩只需要上限,分辨率⼤⼩需要包括上限和下限,下限是为了保证算法效果,⽐如在⽬标检测中⼩⽬标容易检测失败;top_num需要限制下限,不得⼩于0,不设上限,可以接受算法返回的所有结果;阈值根据格式确定,可以是0-100,可以是0-1;注:设置参数的⼀点⼩技巧,为了保证算法效果,有时算法会默认设置参数,即⽤户设置的阈值低于默认参数,则不接受输⼊,采⽤默认,⽤户是⽆感知的;
2. 出参
调⽤接⼝就会有返回信息,产品需要根据业务需求定义返回的核⼼字段信息,这次以百度AI开放平台⼿势识别为例,其中跟业务需求相关的关键字段包括:
result_num、result,即⼀张图⽚中识别的⼿势结果数量,和具体的⼿势信息;result为json数组,包括⼿势的类别、⼿势检测框的位置信息【⼀般识别类算法底层是检测+识别两步】、和⼿势类别的置信度;其中result中的⼀些字段信息,产品可以根据业务需求进⾏增减,⽐如⽬标检测框的位置信息,⼀般业务不需要就可以省略;
三、接⼝限流
接⼝限流也是为了保障系统的安全性,因为有时业务⽅因为业务扩展导致调⽤量激增,容易引起服务端宕机;限流就类似于电闸的保险丝保证请求量超过接⼝上限时系统可以拒绝请求或排队,以此保证系统的安全性;
产品经理需要实现对业务充分评估,给出合理评估量,如TPS(每秒处理的请求量);这样既不会造成系统资源的浪费,也保证业务正常运⾏;
注:与上⾯接⼝响应机制对应,同步接⼝⼀般需要给出峰值tps和响应时间,异步接⼝需要给出⽇调量即可;
四、接⼝测试
接⼝测试虽然是测试⼩的⼯作,测试内容也覆盖众多,但是作为产品可以简单了解以下内容即可,
如,
(1)接⼝可⽤性,即接⼝是否可以正常调⽤,正常返回结果,异常正确处理,正常返回错误码等;
(2)业务需求覆盖,即接⼝输⼊输出是否遵循产品需求⽂档描述;
(3)边界规则遵循,即接⼝是否满⾜业务规则和字段约束条件;
(4)性能条件,通常接⼝上线前需要经过压测达到性能指标才可,包括某并发量下的tps和耗时等
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论