API接口入门(一):读懂API接口文档

34 评论 139134 浏览 829 收藏 10 分钟

对于很多产品小白或求职者而言,API接口是一个产品和研发领域的专业术语,大家可能在文章或者PRD中都已经有接触过API接口的概念。

实际上,接口的应用已经非常广泛和成熟,这个概念主要活跃在公司内部的各系统之间的衔接和对接以及公司间合作的场景。如果你可以认真看完这篇文章,我相信你们对API接口的认识会更深入,甚至超过90%的小白和求职者。

本文目录:

  1. API接口是什么?
  2. 为什么我们需要API接口?
  3. API接口的核心

一、API接口是什么?

我们来以一个常见的数学公式理解API,比如y=x+2,当x=2的时候,y=4,对么?

那此时,我们把y=x+2称为接口,x=2称为参数,y=4称为返回结果,那这个接口的功能就是能把我们输入的数加上2(注意:这里你可以发现接口自身是带有逻辑的)。

类比地,我们来理解一个常见的场景,比如现在有一个可以把经纬度转化为城市的接口,那当我输入经度是55°,纬度是88°的时候,接口通过自己的逻辑运算,返回结果告诉我:杭州市。

这样你就可以清晰地了解百度百科的官方解释了,接口就是预先定义的函数逻辑,他是供其他系统请求,然后返回结果的一个东西。

二、为什么我们需要API接口?

背景:我们的业务系统涉及多方多面,如果要一个公司或者一个系统把所有业务都做完,那未免工作量太大了吧?并且如果其他系统或公司有更好的运算逻辑,那我们在设计功能的时候可以考虑利用接口进行开发。

核心需求:利用现有接口可以降低开发成本,缩短开发成本。

举个例子:比如我是打车的APP,现在我需要在我的页面上展现地图的功能,对于我司而言,新做地图功能未免成本过高,那我们可以在高德开放平台或者百度地图的开放平台,找到地图API,这样的话我们只需要购买高德的服务,部署调用高德地图API,这样就可以快速在我们页面上线地图功能了。

三、API接口的核心

对于小白而言,初看API文档可能是一头雾水的——从哪里看,怎么看,看什么是摆在面前的问题。

其实对于产品经理而言,我们应该更关注这个公司可以提供什么样的API接口服务,比如我知道高德可以提供地图API,规划路线的API,这样的话在我们设计功能和工作中就可以想到调用他们的服务或者参考。

所以产品小白们看不懂也不用过于担心,未来工作中你也会更深入了解清楚,因为看懂并不复杂,以下是API接口的核心点,所有的说明文档离不开这5个核心点。

以下说明均以微信开放平台为例说明,文末有各开放平台的地址,大家有空可以去学习。好了,事不宜迟,现在我们来建立一个场景。

我们现在有一个APP,需要用户在购买的时候调起微信支付的API,完成购买。请各位自动进入这个场景,把自己当作一位产品经理。

1. 接口地址

现在Now,用户点击付款,我们需要告诉微信,我们要调起你们的收银台啦!但,去哪里告诉呢?这就需要接口地址了,也就相当于向微信的这条链接传输指定的数据。

一个链接地址不是我们理解的一个页面,你可以理解是一个电话号码,小白们要改变这个观念。

此时我们可以看到接口文档告诉我们链接是如下这条,那我们现在已经拨通微信的电话了。

2. 请求参数(报文)

我们现在需要告诉微信,你想调用收银台对吧。那我们需要写下来,此时生成的叫做报文,也就是你想告诉这个接口的内容是什么?相当于前文函数的输入x=2。

一般来说,报文的格式和内容都是按接口文档规定的。如下文就是微信开放平台对调起收银台的报文要求。

我们先来看前2个参数,你现在跟微信在对话,是不是应该先告诉微信,你是谁?这里微信的文档告诉你应该要用应用ID+商户号来确定你的身份,什么意思呢?

比如你是A商户,下面有a,b,c三个APP,所以微信要知道你是哪个商家,下面的哪个APP要用收银台。这是非常重要的,微信后面要把收到的钱打到对应的账户以及统计数据等。

那我们就在报文里面写下这两句话:

  • <appid>wx2421b1c4370ec43b</appid>(我的应用ID是wx2421…….)
  • <mch_id>10000100</mch_id>(我的商户号是10000…….)

好了,现在微信知道你是谁了,那你要告诉微信,你需要微信支付帮你收多少钱对吧?这里定义了货币类型和总金额,也就是收什么货币,收多少钱。

这里你看,货币类型的必填写了否,也就是说你也可以不告诉微信支付货币类型是什么,因为他在后面备注了默认是人民币。

好的,那我们写下两段报文

  • <free_type>CNY</ free_type >(我要收人民币)
  • <total_fee>1</total_fee>(我要收1元)

好了,现在微信知道你是谁,也知道要收多少钱了,那接下来微信支付要把收钱结果告诉你呀,因为你得知道用户是成功支付了才能继续发货,服务啊等等的。所以这里我们用到通知地址,就是告诉微信,等下完事了他去哪里告诉你支付结果。那我们把地址写好:

<notify_url>http://wxpay.wxutil.com/pub_v2/pay/notify.v2.php</notify_url>

3. 返回结果

刚刚微信支付已经去收款了,现在他要在我们留下的通知地址中,告诉我们结果了。结果无非是两种:成功收款?收款不成功?

(1)成功

很顺利,现在用户成功付钱了,并且微信也把成功的消息告诉我们了,并且他还把用户支付的一些信息也告诉我们。

那这里就是微信支付成功收款后告诉我们的信息。

应用APPID,商户号:告诉你我成功扣款的是哪家商户的哪个APPID的交易。

业务结果:成功或失败

(2)失败

在产品设计的时候,我们往往很关注失败的情况,当收款失败的时候,微信同时会告诉你失败的原因,如下图很好理解,失败的原因有很多很多种,我们在设计的时候往往要分析每种失败的原因,为每个失败的原因设计页面和用户提示,以确保用户能理解。

以上就是API接口基本运作模式的理解,下面我将继续更新API接口的一些更为深入和细节的关键元素,如请求方式/签名/加解密等等。

可供参考的开放平台网站

微信支付:https://pay.weixin.qq.com/wiki/doc/api/index.html

高德平台开放平台:https://lbs.amap.com/

 

本文由 @就是爱睡觉 原创发布于人人都是产品经理。未经许可,禁止转载

题图来自Unsplash,基于CC0协议

更多精彩内容,请关注人人都是产品经理微信公众号或下载App
评论
评论请登录
  1. 很容易理解!很感谢!

    来自北京 回复
  2. 太棒了,小白一下就懂了

    来自广东 回复
  3. 感谢作者答疑解惑,想问一下我们产品经理就API接口需要向研发传递什么内容,做哪些工作。可以出一章答疑么?

    来自上海 回复
    1. 我认为产品经理要做的是摸清楚合作方有什么API和关键返回结果,以及设计什么时候调用,并拿到结果后怎么处理。

      来自广东 回复
  4. 可以分享吗

    回复
  5. 看了好几篇,这一篇说的是最清楚的,感谢

    来自广东 回复
  6. 推荐试试 Apifox,好用很多。接口文档+接口调试+数据 Mock+接口测试,功能齐全。 接口文档和接口开发调试使用同一个工具,接口调试完成后即可保证和接口文档定义完全一致。高效、及时、准确!

    来自广东 回复
  7. 写得太好了吧,对我们这种刚入行的小白太有用了

    回复
  8. 逻辑清晰,通俗易懂,对内容输出者表示感谢~

    来自广东 回复
  9. 真的通俗易懂,好棒,学习了,希望大大可以出关于两个三方系统之间对接,产品经理要做的事案例

    回复
  10. 呜呜要哭了 写的太好了!拯救我!

    回复
  11. 总的来说,通俗易懂!

    来自上海 回复
  12. 非常好,把困惑我很久的API讲懂了

    来自北京 回复
  13. 全是干货啊,小白太感动了,抱紧大腿

    来自广东 回复
  14. 感谢,

    回复
  15. 写的真不错,学习了,感谢分享! 关注中……

    来自北京 回复
  16. 写的不错

    来自菲律宾 回复
  17. 学习了,感谢分享

    来自广东 回复
  18. 人民币单位不是分吗?为什么1会是“我要收1元”而不是“我要收1分”呢?

    来自广东 回复
    1. total_fee 1 /total_fee

      来自广东 回复
  19. 产品经理需要设计字段名变量名等等嘛?

    来自上海 回复
  20. 不是说五个核心吗,我只看到三个核心,其他两个是什么

    来自广东 回复
  21. 消息通知

    回复
  22. 你好,可以公众号上分享么?

    回复
    1. ok

      回复
  23. 写的很棒,如果有公众号就更好了,看了评论区都是可以分享的,我这边搬运一下,或注明原作者,和原文链接的

    来自广东 回复
    1. ok

      回复
  24. 我是产品小白,真的很好,可以分享吗

    来自江苏 回复
    1. ok

      回复
  25. ok

    回复
  26. 通俗易懂

    来自北京 回复
  27. 好文

    来自浙江 回复
  28. 赞赞赞,通俗易懂,速速更新后面的文章 😯

    来自北京 回复
  29. 😉 正在看接口问题,,,看完觉得简单多了,

    来自北京 回复