什么是API?
是不是经常听见程序猿小哥哥A说:“这个简单,直接调用现成的接口就可实现。 一会儿程序猿小哥哥B说:“你这个不行,我们的第三方服务接口不支持。”
此时你的心里活动:API ≈ 听不懂 啥子是接口哦?接口能干啥呀?接口怎么用呀?我怎么去了解这个功能,接口到底能不能实现呀?莫慌,且看下文慢慢道来 API的全名是Application Programming Interface,又叫做“接口”。
如果你的产品是微信小程序,程序员就会说“咋们得好好看看微信开发接口文档”,“这里需要调用微信登录的api呀”,“哦,你这个功能的设计,微信的api不支持哟”。。。不懂技术的产品经理马上就一头雾水。
什么是api?
简单的说,api就是某个系统提供的带有约定说明的接口。通过调用api可以获取这个系统提供的服务,服务是什么?怎么调用?能获取什么?都在api的约定说明里面(术语称为‘接口规范’) 例如,我们可以调用百度的翻译接口将中文翻译为英文,可以调用微信的登录接口让用户通过微信登录到我们的系统中。 你可能已经get到了几个要点:
1 - 如果你的产品里面自带了翻译的算法,你就不用了解啥是api了。api常用于从其它系统获取服务。
2 - 如果你要让你的产品支持微信登录,因为微信不是你们家的,你必须了解微信的api
3 - api一定会提供详细的接口规范说明文档告诉你怎么使用这个接口,否则就用不了(例如下图就是微信某个接口的说明文档)
微信API说明文档示例
现实生活调用api的例子
下面是进阶,帮助你了解api的更多细节。为了让非技术的你能够理解技术世界的api,我必须得想一个较为类似的现实生活的例子,通过类比的方式快速理解。 现在全国各个街道社区都创办了便民图书馆,去便民图书馆借书就是一个很好的例子。我讲这个例子时带出一些api的专用术语,你就可以很快理解了。 你现在需要一本参考书,家里没有而且网上也买不到,却听朋友说这本书便民图书馆里有。于是你需要调用便民图书馆的【借书api】去获取这本书。(请注意是你有这个需要,而且这个需要你自己搞不定,所以才会去用便民图书馆提供的服务)
什么是api的url地址
你首先要找到最近的便民图书馆的位置,这就是api的访问地址。(所以每个api都有一个明确的url,也就是网络地址) 什么是api的接口规范 你到了图书馆,仔细看了门口的借书流程(这就是在阅读api接口规范)。
什么是api的参数
流程上说,你需要提供书的名字、作者、出版社、你的身份证、借多久,这就是调用借书api需要提供的参数。 什么是调用api 于是你走到服务台,向工作人员提供以上的信息,此时你就在“调用”api了。
什么是get调用方式
你可以向工作人员口述以上信息,此时你调用借书这个api的方式就是get方式。(get方式会将参数直接拼接在接口地址url的后面,从浏览器的地址栏就能一眼看出各个参数,是非常暴露的一种方式,犹如你向工作人员口述参数时旁边的人也能听到)
什么是post调用方式
你也可以填一张借书信息表,递交给工作人员,此时你调用借书这个api的方式就是post方式。(post方式会将参数放到http请求的body里面,浏览器地址栏是看不出参数的。因此填表的时候旁边有人也相对安全,偷窥除外)
什么是api的返回值
你传递了完整的参数成功调用了借书api,工作人员开始工作,她走进了库房,很快又出来,手里拿着你要的书,并且书上有一个标签纸写了还书的日期。她把这本书交给你,此时,你就拿到了api的返回值:【结果:借书成功;细节:【你要的书 + 还书的日期】 】 也可能,工作人员空着手出来了,但她给了你一张纸,上面写着另一个便民图书馆的地址、电话、工作时间。此时你也拿到了api的返回值:【结果:借书失败; 细节:【请到另一个图书馆取书,该图书馆的地址+电话+工作时间】】 于是,你会根据返回值的情况进行相应下一步的动作。 返回值有哪些情况,每种情况下都有哪些详细信息,都会在接口文档中说明。这个工作人员不是看见你帅就贴了一张还书日期的标签纸,这是图书馆的api接口规范!
只有一个api吗#API#
聪明的你马上会举一反三,图书馆提供的api肯定有 借书api、还书api、延期api、办理长期借书卡api。。。。。 这些都是图书馆提供的服务。每个服务都是api,都有api调用的地址(哪个窗口办理)、输入参数(你需要提供什么)、返回值(你将会得到几种可能的结果)。这些都会明确的写在api接口规范里。 所有这些api接口规范全部都张贴在一张巨大的墙上,这张墙就叫“开发平台手册”“开放平台开发指南”等等。其实就是各种api的详细说明。
什么是api调用的key和secret
图书馆发现仅凭身份证就能借书已经爆仓了。怎么办呢?借书卡!必须先办借书卡,每次凭卡号和密码进行借书。于是借书api的参数里面就多了借书卡的卡号和密码,卡号就是key,密码就是secret。 因此我们必须先调用图书馆的开卡api,获取属于自己的卡号key和密码secret,后面调用其它接口时提供自己的key和secret,图书馆的api就能提供服务。 没办卡就没有key和secret,就无法访问图书馆的接口。
现在几乎所有的api都会要求你先注册该系统的账号,生成自己的key和secret。例如你必须先注册百度开放平台的账号,才能调用百度翻译的api;必须先注册微信开放平台,才能调用微信的api。
微信开放平台把key叫做apppid,把secret叫做appsecret。 这种机制一方面是阻止不注册的人随意调用接口带来的服务器负荷,另一方面当然就是嘿嘿(你懂的)。
系统为什么要提供API接口?
你想过吗,系统为啥要提供这些API接口呢?百度为啥要提供翻译接口API,微信为啥要提供微信接口API。。。基本上你看到的大厂都有开发平台,都对外提供各种API接口。 腾讯,通过微信这个产品获取C端用户,也通过微信接口获取开发者用户,给其它产品赋能微信登录等功能的同时,也通过被赋能的产品在C端获得了品牌曝光度。相当于拓展了单一产品的市场。 不得不提到的是,接口调用也是会收费的哦,创造了新的收入方式。例如聚合数据这个网站,就是专门通过各种API接口赚钱的。
来看一个技术世界真实的API
现在来看一个技术世界真实的API。 https://fanyi.baidu.com/gettts?lan=en&text=hello&spd=1
现在你能看懂这个API了吗?
https://fanyi.baidu.com/gettts 就是 API的url地址,可以猜到这个API是百度提供的,用来得到翻译后的文本的语音!
?后面的都是访问这个API的参数
第一个参数 名字 叫做 lan,我们传入的 值 是 en,所以形成了 lan=en。
第二个参数 名字 叫做 text,我们传入的 值 是 hello,所以形成了 text=hello。
第三个参数 名字 叫做 spd,我们传入的 值 是 1,所以形成了 spd=1。
第一个参数告诉接口我们需要的是什么语言的语音(中文还是英文语音),第二个参数告诉接口需要什么文字的语音,第三个参数告诉接口需要什么语速的语音。 这个接口的访问方式是get方式,因为参数都在链接里面。因此你可以直接把这个链接放到浏览器里面试试结果。你会马上得到一个语音文件,就是hello的英文语音。
因此,如果你的产品里面需要朗读英文单词,你自己不可能有所有单词的朗读语音嘛,怎么办呢?就可以通过API,用百度的这个接口服务,通过这个接口获得英文单词对应的语音文件然后播放就可以啦!
总结
总结一下,API是获得另外一个系统提供的服务,API有明确的url地址,参数约定,返回值说明,总称为接口规范。根据接口规范,调用API,就可以获取这个系统提供的这个服务啦!