关于API和SDK的个人理解及两者区别

最近接到公司的一项任务,调用第三方库的一些东西。
因此记录一下在使用第三方的功能模块时常常提及到的两个名词——API和SDK。

1.SDK是什么?
SDK:
概念:软件开发工具包(SDK,全称:Software Development Kit)
一般都是一些软件工程师为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件时的开发工具的集合。

通俗点是指由第三方服务商提供的实现软件产品某项功能的工具包。

就相当于很多API和其他文件的集合体,你可以用这个完成某一个事情。

举例子:
整个计算器产品可以看做是一个SDK,它里面有API集合(计算器),说明文档(说明书),以及一些其他文件。
这个SDK的功能就是计算,可能要算什么不确定,但是你可以通过这个SDK中的某个方法完成,实现你的目的。

比如百度AI平台的图像识别SDK:

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

其实就是别人已经写好的可以实现特定功能的函数,而你只需要根据他提供好的接口,也就是调用他的方法,传入他规定的参数,然后这个函数就会帮你实现这些功能。

举例子:

比如别人写好了一个数字求和的方法sum(int a, int b)。
提供给你一个API接口——你只需要调用它这个sum()函数,然后传入这个a,b的值,然后就可以得到计算的结果,你不需要知道这个方法是怎么实现的,知道该怎么调用即可。

如果别人又写了一个两数相乘的方法Mul(int a, int b),那这又称为另一个API。

比如百度Ai平台的图像识别API:

3.SDK和API的区别

两者区别:

1.API是一个具体的函数,一个确定的功能,已经明确了它的作用(比如做加法)。

2.SDK就像是很多方法的集合体,是一个工具包。

比如你要做加法,你就调用计算机SDK的加法API,要做减法就调用减法API,无论你想完成什么计算,SDK里总有能实现的方法。

3.SDK除了他提供的完善的接口,他还会给你提供相关的开发环境,而API需要的环境你得自己提供(比如传参)

4.SDK相当于开发集成工具环境,API就是数据接口。在SDK环境下调用API数据。(而这个SDK你可以自己配置或者下载第三方提供的)

到此结束,以上均属于个人理解。

最新文章

  1. ABAP中的数据校验-备注
  2. 2016年10月22日 星期六 --出埃及记 Exodus 19:6
  3. Android实现简单短信发送器
  4. img src 使用 base64 图片数据
  5. mysql问题Connection using old (pre-4.1.1) authentication protocol refused (client option 'secure_auth' enabled)的解决方法
  6. 北大ACM(POJ1001-Exponentiation)
  7. poj 2251 搜索
  8. js代码判断浏览器种类IE、FF、Opera、Safari、chrome及版本
  9. C++中#和##的特殊使用
  10. php执行linux命令的6个函数
  11. Codeforce A. Fair Game
  12. ●BZOJ 2752 [HAOI2012]高速公路(road)
  13. ajax传递数组,后台更新
  14. 潭州课堂25班:Ph201805201 django 项目 第三十五课 后台用户权限的添加 mixins 课堂笔记)
  15. python之tkinter使用-单级菜单
  16. [LeetCode] 560. Subarray Sum Equals K_Medium
  17. memcache 学习笔记
  18. BZOJ3812: 主旋律
  19. HDU 5670 Machine 水题
  20. 在 HTML 中使用JavaScript

热门文章

  1. 用JavaScript+HTML实现双色球随机摇号效果
  2. selenium连接浏览器方式
  3. Solution -「CEOI 2017」「洛谷 P4654」Mousetrap
  4. 从零开始,开发一个 Web Office 套件(5):Mouse hover over text
  5. Windows原理深入学习系列-强制完整性控制
  6. windev中自定义选定列的使用和注意事项
  7. @vue/cli的配置知道多少-publicPath,outputDir,assetsDir,indexPath,filenameHashing,configureWebpack,productionSourceMap
  8. JZ-060-把二叉树打印成多行
  9. JZ-046-圆圈中最后剩下的数
  10. LeetCode-025-K 个一组翻转链表