浅谈Sdk与Api,你更喜欢哪个?

之前一直没搞懂sdk和api之间的关系,官方的解释也是似懂非懂。

在百度百科中,sdk定义为软件开发工具包(外语首字母缩写:SDK、外语全称:Software Development Kit)一般都是一些软件工程师为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件时的开发工具的集合。软件开发工具包括广义上指辅助开发某一类软件的相关文档、范例和工具的集合。

API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。

好吧,看到这里我还是一头雾水,这些话语太官方,简直不给新手留一条活路。后面参照了一些文章后才真正理解sdk和api的意思。

类比来说,api可以比作房门钥匙。在一个房子里,每间房间有其不同的用途与资源。而当要获取到相应房间的资源时,我们需要先用钥匙打开房门。譬如我们要从书房里拿书、要去卧室拿枕头,我们都需要先找到相应房间钥匙,继而进入房间拿书、拿枕头。调用api的过程,就是用钥匙开门的过程。

而sdk则是把这些钥匙串在一块儿,将api集成在一块儿。拥有sdk,你便可以在该房子里畅通无阻,想要获得哪个房间里的资源,用手中的钥匙打开房门,进去拿取即可。

Api又分为open api和私有api。Open api 顾名思义,即是向所有人公开的接口,允许任何人调用它并获取到它背后的数据。它就好比于图书馆,你只需要进行相应的身份认证,就可以进入里面获取到相应的图书及资源,而身份认证便是你获取资源的钥匙。

现在很多公司都开放自己的open api,并为了用户调用方便,他们大多采用sdk文档方式打包。用户在调用时只需要下载该sdk文档,根据相应规范进行调用即可。这样就省去了重写函数去封装http、https等请求的工作,节省更多时间去做更有价值的事情。

正所谓实践出真知,我在市面上试了很多接口管理工具,收费的不收费的都有,后来经过开发前辈推荐一个生成sdk文档的工具,eolinker企业版支持sdk文档一键化生成,特地用了一下,界面风格我还挺喜欢的。它集接口文档管理、测试、sdk文档生成于一体,在这里,我不仅可以编写管理我的接口文档,编写完后还可以进行测试,而另外更意外的是它还可以根据我所编写的接口信息自动化生成sdk文档,从开发到测试再到调用全都替我们想好了,这大大节省了在开发过程中繁琐而又无意义的工作时间,让我们可以做更多更有价值的工作,更加专注于产品本身。

不过这sdk文档生成有个局限,现在只支持生成php和javascript的sdk文档,像现在比较热门的IOS和Andiod sdk还不支持。要是能完善这两种语言的sdk,估计会更受欢迎。

你更加喜欢API还是SDK呢?

相关文章

相关标签/搜索